首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Delphi XE-7和Indy 10.6.0.5169的简单UDP示例/演示应用程序

用于Delphi XE-7和Indy 10.6.0.5169的简单UDP示例/演示应用程序
EN

Stack Overflow用户
提问于 2014-12-04 04:03:17
回答 1查看 12.6K关注 0票数 0

我正在寻找一个简单的UDP示例/演示应用程序,用于Delphi XE-7和Indy 10.6.0.5169。

我已经寻找了一段时间,我一直在寻找的所有东西都是针对不再编译的Indy或Delphi的旧版本。

为了处理WS-Discovery消息,我需要实现UDP客户端。

我尝试使用下面列出的应用程序:

http://delphi.about.com/library/weekly/code/src101105.zip

SendBuffer在这里给了我一个错误:

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2014-12-04 05:45:17

该示例适用于Indy9。对于Indy10,您必须使用TIdBytes而不是固定数组,例如:

代码语言:javascript
复制
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()方法,可以稍微简化代码

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27280594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档