[英]SOAP server and client application VCL+indy demo for Delphi XE?
[英]simple UDP example/demo application for Delphi XE-7 and Indy 10.6.0.5169
我正在寻找Delphi XE-7和Indy 10.6.0.5169的简单UDP示例/演示应用程序。
我已经寻找了一段时间,我发现的所有内容都是针对不再编译的Indy或Delphi的旧版本。
我需要实现UDP客户端才能处理WS-Discovery消息。
我尝试使用此处列出的应用程序:
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;
该示例适用于TIdBytes
。对于Indy 10,您必须使用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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.