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);
我有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);