我想知道有什么方法可以禁止来自节点 A 的 UDP 广播数据包不被节点 A 本身接收。
对于 braodcast,我只是使用 INADDR_BROADCAST
并在
接收方我正在使用 AI_PASSIVE | AI_NUMERICHOST
.
最佳答案
不,这是广播的基本属性——子网上的每台主机,包括发送方,都必须在网络堆栈中一直向上处理数据包。您的选择是:
- 切换到multicast .这是首选,因为与广播相比,多播减少了整个网络的负载,并且因为您可以使用
IP_MULTICAST_LOOP
显式控制多播环回。套接字选项。 - 不要
bind(2)
发送机器上的目标端口。这可行,但有点笨拙,因为它对应用程序设计和/或部署施加了限制。
关于linux - 禁用 UDP 广播的自接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4499237/