您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > DELPHI开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

Delphi实现NetBIOS广播收发
2001-04-10· ·余六 ··天极论坛

上一页  1 2 3  


   procedure postrout(var ncbR:PNCB);

    begin

     sendMessage(wnd_BROADCAST,WM_TIMER,0,0);

    end;

   end.

   ////////窗口单元//////////

   unit broadcast;

   interface

   uses

     Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,netbios;

   type

     Tmain=class(TForm)

    private

     {Private declarations}

     file://消息处理过程,注意消息宏要与后处理中的一致

     procedure post_main(var Message:TMessage);message WM_TIMER;

   public

     {Public declarations}

   end;

    var

     main: Tmain;

     ncbname:UCHAR;

     ncbRock:PNCB;

     post_add:POST;

   implementation

     {$R *.DFM}{$A-}{$I-}

  /////////主窗口建立过程/////////

    procedure Tmain.FormCreate(Sender: TObject);

     var

      ret:UCHAR;

      i,x,y:integer;

      p:single;

     begin

      new(ncbRock);

      randomize();i:=0;

      FillChar(char_buffer,sizeof(char_buffer),0);

      post_add:=@postrout;

      file://取后处理例程的地址

      ncbRock.ncb_buffer:=@char_buffer; file://取数据缓冲区的地址。

      InitNCB(ncbRock);

      ret:=9;

      ncbname:=random(100);

      ncbRock.ncb_name[1]:=ncbname;

      ncbRock.ncb_command:=$30;

      file://加名,ret为0加名成功

      while ((i<10)and(ret<>0)) do

       begin

        ret:=netbiosSR(ncbRock);

        i:=i+1;

       end;

       if ret<>0 then

        begin

        for i:=1 to 20 do

         messagebeep(-1);

         MessageDlg(‘网络通信无法实现!您需要关闭程序重新运行.'',mtWarning,

         [mbOk],0);

        end

       else if ret=0 then

        begin

         ncbRock.ncb_post:=post_add;

         ncbRock.ncb_command:=$a3; file://异步接收方式字

         ncbRock.ncb_event:=0;

         ncbRock.ncb_length:=512;

        ret:=netbiosSR(ncbRock);

        end;

      end;

     ///////////广播消息处理过程/////

     procedure Tmain.post_main(var Message:TMessage);

      var

       x:integer;

       ret:UCHAR;

      begin

        file://取出数据缓冲区的内容

        for x:=0 to 511 do

         int_buffer[x+1]:=char_buffer[x];

         ////以下可以进行数据处理////

         file://重新打开异步接受

         ncbRock.ncb_post:=post_add;

         ncbRock.ncb_command:=$a3;

         ncbRock.ncb_event:=0;

         ncbRock.ncb_length:=512;

         ret:=netbiosSR(ncbRock);

        end;

      end.

  注:广播发送非常简单,不再详述。上述程序经过一年运行完全可靠。另外,经过改造可以将其改为LAN下的聊天程序。

上一页  1 2 3  

■ 相关内容
 LED数码管仿真显示程序
 Delphi中ListBox控件的六种特效
 网上听广播
  网上听广播
 Delphi中多库关联查询
 VC用Ado接口连接和使用数据库
 Delphi数据压缩处理
 Powerbuilder 控件的二次开发
 Delphi中用Adsi创建IIS虚拟目录
 数据库正规化和设计技巧
 自编扫雷程序详解(Delphi版)
 提升PHP速度全攻略
 广播技术
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!