linux - 禁用 UDP 广播的自接收

标签 linux sockets networking udp broadcast

我想知道有什么方法可以禁止来自节点 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/

相关文章:

linux - unixODBC/Postgres密码神秘登录错误

linux - 如何毫不费力地从 xcb 获取 unicode 输入

c++ - 如何通过 Windows Winsock send() 发送包含指针的结构?

c - C语言套接字编程,需要示例代码和教程

关闭与关闭套接字?

Android:线程无限循环/手机过热

c++ - 在 libpthread 链接应用程序中捕获异常时出现段错误(linux、C++)

c++ - 如何在 C 中找到可执行文件的位置?

C ssl 链接应用程序失败

java - 有没有比 RMI 更快的 Java 二进制协议(protocol)?