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