我找到的是nmudp的代码,但delphi7已经没有该控件了
听说用indy了
但inudpclient和inudpserver我不知道怎么用。
在论坛上找了一些也不太详细我就是想实现client向局域网 广播,然后 server收到后返回信息
只要这样就可以了。麻烦给段代码~谢了!!
我没有多少分了,不好意思~

解决方案 »

  1.   

    其中的idudpclient好像没有接收的部分
      

  2.   

    procedure TForm1.Button8Click(Sender: TObject);
      var
        cmd:string;
    begin
       IdUDPClient1.Host := '192.168.0.255';//这个地方就是你要广播的网段
       IdUDPClient1.Port := 12345;
       IdUDPClient1.Active := True;
       cmd := '大家吃了吗?';
       IdUDPClient1.Send(cmd);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      IdUDPServer1.DefaultPort := 12345;
      IdUDPServer1.Active := true;
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
      var
       cmd:string;
    begin
       AData.Seek(0,0);
       SetLength(cmd,AData.size);
       AData.Read(cmd[1],AData.Size);
       showmessage(cmd);
    end;
      

  3.   

    同意   piao9wu(飘麟霄骥)
      

  4.   

    先谢谢piao9wu(飘麟霄骥) 和各位的回复to:piao9wu(飘麟霄骥)请问unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Sockets, IdUDPServer, IdBaseComponent, IdComponent,
      IdUDPBase, IdUDPClient;type
      TForm1 = class(TForm)
        Button1: TButton;
        IdUDPClient1: TIdUDPClient;
        IdUDPServer1: TIdUDPServer;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
          ABinding: TIdSocketHandle);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var
    cmd:string;
    begin
    IdUDPClient1.Host:='192.168.0.255';//这个地方就是你要广播的网段
    IdUDPClient1.Port:=12345;
    IdUDPClient1.Active:=True;
    cmd :='大家吃了吗?';
    IdUDPClient1.Send(cmd);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    IdUDPServer1.DefaultPort:=12345;
    IdUDPServer1.Active:=true;
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding:TIdSocketHandle);
    var
    cmd:string;
    begin
    AData.Seek(0,0);
    SetLength(cmd,AData.size);
    AData.Read(cmd[1],AData.Size);
    showmessage(cmd);
    //idudpserver1.Send();  如何知道刚才进行广播的机的ip,以便回复?
    end;end.1.提示:[Error] Unit1.pas(18): Undeclared identifier: 'TIdSocketHandle'
    2.当idudpserver1收到广播的信息后如何进行回复,idudpserver1.Send(); 如何知道刚才广播者的ip以便回复,是否要刚才idudpclient广播的时候把自己的ip作为广播信息,才能使收到的机进行回复?谢谢!
      

  5.   

    uses IdSocketHandle  //这个应该知道放在哪吧procedure TForm1.Button8Click(Sender: TObject);
      var
        cmd:string;
    begin
       IdUDPClient1.Host := '192.168.0.255';//这个地方就是你要广播的网段
       IdUDPClient1.Port := 12345;
       IdUDPClient1.Active := True;
       cmd := '大家吃了吗?';
       IdUDPClient1.Send(cmd);
       cmd := IdUDPClient1.ReceiveString();
       ShowMessage(cmd);
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      IdUDPServer1.DefaultPort := 12345;
      IdUDPServer1.Active := true;
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
      var
       cmd:string;
    begin
       AData.Seek(0,0);
       SetLength(cmd,AData.size);
       AData.Read(cmd[1],AData.Size);
       showmessage(cmd);
       cmd := '我吃了';
      ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,cmd[1],length(cmd));
    end;