还有很多与此问题有关的其他答案,但我相信这是特定的。UDP广播到在某些网络中不工作的所有IP
我使用德尔福XE2和印10.5.8和TIdUDPServer
在我的地方发展网络我有相同的网络IP子范围的一切,所有连接到同样的接入点(LinkSys的)
我有Android的sendind UDP广播到255.255.255.255请求服务器ip地址,这是写在德尔福使用端口44444 TIdUDPServer侦听。
请求得到那里罚款,我可以回答没有问题。完全按照预期工作。
但是我注意到,在某些网络中它不起作用!它总是基于接入点的简单网络,我不确定,但似乎发生问题的地方是服务器PC连接到局域网端口,而设备使用的是WiFi,全部在同一接入点。
可能是接入点不通过LAN和WiFi广播UDP数据包的情况?我知道这种广播是非常有限的,但我还没有找到任何信息告诉我,在同一个接入点存在这样的限制。
是否有方法可以测试或解决方法?
这个解决方案需要足够强大来处理那里的许多AP。
编辑:对于那些想要从网络中检索更多信息的源代码(包括广播IP),请参阅下面的答案中提到的遵循此解决方案,它就在那里。
谢谢,我对这些东西是新的,使用这种广播的原因之一是因为我的服务器软件运行在具有IP动态分配的PC上,并且应该像这样对客户简单。你的意思是根据服务器绑定IP,广播IP总是要为那个子网改变?发送UDP消息到这个广播IP就像发送给该子网中的所有ips一样? –
本地绑定的IP是否动态无关紧要。您仍然可以检索IP分配给NIC的当前子网信息,并确定当前的广播IP(如果需要,手动计算非常简单)。即使绑定的IP可能动态改变,子网的IP范围和掩码也不会经常更改,因为它们是路由器子网配置的一部分,会影响该子网上的所有客户端。是的,向广播IP发送数据包会将数据包传送给子网内的所有IP(因此它为什么是*广播* IP)。 –
太棒了!我已经测试过并且工作得非常好,你是否介意在delphi中指定一个解决方案来进行计算?我已经改变了我的android应用程序发送到192.168.0.255(为我的测试用例),我的服务器收到UDP广播,并可以回答。这将帮助你无法想象。 –