Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi Indy TUDPServer广播_Delphi_Virtualbox_Indy_Broadcast - Fatal编程技术网

Delphi Indy TUDPServer广播

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

我有三个网络适配器,两个有效的和一个“VirtualBox主机专用网络”

当尝试使用下面的代码发送广播(绑定正确的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
属性绑定并激活服务器(如果尚未激活),然后返回服务器绑定到的第一个绑定对象。激活
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上运行该软件,我得不到答案(即使我在所有界面上发送)。