我正在寻找一个简单的UDP示例/演示应用程序,用于Delphi XE-7和Indy 10.6.0.5169。
我已经寻找了一段时间,我一直在寻找的所有东西都是针对不再编译的Indy或Delphi的旧版本。
为了处理WS-Discovery消息,我需要实现UDP客户端。
我尝试使用下面列出的应用程序:
http://delphi.about.com/library/weekly/code/src101105.zip
SendBuffer在这里给了我一个错误:
procedure TUDPSearchForm.SearchPartner;
var
x: Array[0..3] of Byte;
begin
RadioGroup1.Items.Clear;
RadioGroup1.ItemIndex := -1;
Height := 50+13;
Top := Top;
Left := left;
Show;
IdUDPClient1.Host := '255.255.255.255';
IdUDPClient1.Active := true;
IdUDPClient1.BroadcastEnabled := True;
x[0] := $00; // Search Receivers
x[1] := $00; // Search
x[2] := MessageCount div $100;
x[3] := MessageCount mod $100;
inc(MessageCount);
IdUDPClient1.Port := UDPDefaultPort;
IdUDPClient1.SendBuffer(x, 4);
IdUDPClient1.BroadcastEnabled := False;
end;发布于 2014-12-04 05:45:17
该示例适用于Indy9。对于Indy10,您必须使用TIdBytes而不是固定数组,例如:
procedure TUDPSearchForm.SearchPartner;
var
x: TIdBytes;
begin
RadioGroup1.Items.Clear;
RadioGroup1.ItemIndex := -1;
Height := 50+13;
Top := Top;
Left := left;
Show;
IdUDPClient1.Host := '255.255.255.255';
IdUDPClient1.Active := true;
IdUDPClient1.BroadcastEnabled := True;
SetLength(x, 4);
x[0] := $00; // Search Receivers
x[1] := $00; // Search
x[2] := MessageCount div $100;
x[3] := MessageCount mod $100;
inc(MessageCount);
IdUDPClient1.Port := UDPDefaultPort;
IdUDPClient1.SendBuffer(x);
IdUDPClient1.BroadcastEnabled := False;
end;通过使用Broadcast()方法而不是SendBuffer()方法,可以稍微简化代码
procedure TUDPSearchForm.SearchPartner;
var
x: TIdBytes;
begin
RadioGroup1.Items.Clear;
RadioGroup1.ItemIndex := -1;
Height := 50+13;
Top := Top;
Left := left;
Show;
SetLength(x, 4);
x[0] := $00; // Search Receivers
x[1] := $00; // Search
x[2] := MessageCount div $100;
x[3] := MessageCount mod $100;
inc(MessageCount);
IdUDPClient1.Broadcast(x, UDPDefaultPort);
end;https://stackoverflow.com/questions/27280594
复制相似问题