Indy TUDP服务器广播

Indy TUDPServer Broadcast

我有3个网卡,2个有效,1个'VirtualBox Host-Only Network'。

当尝试使用下面的代码(绑定正确的 IP)发送广播时,广播数据在 VirtualBox 网络适配器上发送(使用 wireshark 检查),当然没有得到任何答复。

FIdUDPServer.Binding.IP := Settings.netInterfaces[settings.sett_net_interface].AddrIP; 
FIdUDPServer.BroadcastEnabled := True;
FIdUDPServer.Broadcast(udpDiscovery, BCport);

我正在尝试将我的真实适配器的 IP 绑定到 IdUDPServer (Binding.IP),但广播是从错误的适配器发送的。

当我禁用 virtualbox 适配器时,我再次得到答案。 这里有什么问题? IDE 是 Delphi 2010 年。

访问 TIdUDPServer.Binding 属性 绑定并激活服务器(如果尚未激活),然后 returns 服务器绑定到的第一个绑定对象。在激活 TIdUDPServer 时更改 Binding.IP 属性 无效。在激活服务器之前,您必须使用所需的本地绑定填充 TIdUDPServer.Bindings 集合,然后您可以在服务器激活后使用集合中所需的绑定对象进行广播。例如:

FIdUDPServer.Active := False;
FIdUDPServer.Bindings.Clear.
FIdUDPServer.Bindings.Add.IP := Settings.netInterfaces[settings.sett_net_interface].AddrIP; 
FIdUDPServer.BroadcastEnabled := True;
FIdUDPServer.Active := True;
FIdUDPServer.Broadcast(udpDiscovery, BCport);
// or:
// FIdUDPServer.Bindings[index].Broadcast(udpDiscovery, BCport);