Delphi Indy TUDPServer广播
我有三个网络适配器,两个有效的和一个“VirtualBox主机专用网络” 当尝试使用下面的代码发送广播(绑定正确的IP)时,广播数据将在VirtualBox网络适配器上发送(通过wireshark检查),当然不会得到应答Delphi Indy TUDPServer广播,delphi,virtualbox,indy,broadcast,Delphi,Virtualbox,Indy,Broadcast,我有三个网络适配器,两个有效的和一个“VirtualBox主机专用网络” 当尝试使用下面的代码发送广播(绑定正确的IP)时,广播数据将在VirtualBox网络适配器上发送(通过wireshark检查),当然不会得到应答 FIdUDPServer.Binding.IP := Settings.netInterfaces[settings.sett_net_interface].AddrIP; FIdUDPServer.BroadcastEnabled := True; FIdUDPServer
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
属性绑定并激活服务器(如果尚未激活),然后返回服务器绑定到的第一个绑定对象。激活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);
访问
TIdUDPServer.Binding
属性将绑定并激活服务器(如果尚未激活),然后返回服务器绑定到的第一个绑定对象。激活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);
您是否能够循环查看
设置的每个元素。netInterfaces[]
?如果是这样,当你为每个人重复广播(0)
时会发生什么?@HughJones我使用界面的广播地址对im做了一些修改。例如,对于“接口”192.168.100.100 im,使用192.168.100.255作为广播地址的目标。这样,我可以在正确的界面上发送广播,但在我以外的其他PC上运行该软件,我得不到答案(即使我在所有界面上发送)。您是否能够循环查看设置的每个元素。NetInterface[]
?如果是这样,当你为每个人重复广播(0)
时会发生什么?@HughJones我使用界面的广播地址对im做了一些修改。例如,对于“接口”192.168.100.100 im,使用192.168.100.255作为广播地址的目标。这样,我可以在正确的界面上发送广播,但在我以外的其他PC上运行该软件,我得不到答案(即使我在所有界面上发送)。