禁用UDP广播的自我接收【JAVA教程】

!
也想出现在这里? 联系我们
信息

禁用UDP广播的自我接收,第1张

概述禁用UDP广播的自我接收

我想知道有没有什么办法可以禁止从节点A到节点A本身的rcvd的UDP广播数据包。 对于braodcast我简单地使用INADDR_broADCAST和在rcvr我使用AI_PASSIVE | AI_NUMERICHOST。

谢谢Arpit

无法通过套接字“/var/run/MysqLd/MysqLd.sock”连接到本地MysqL服务器

struct sockaddr_un v / s sockaddr – C(linux)

有一种方法来获得通知,当数据包到达套接字,而不是继续轮询使用recv()

windows套接字通知接收器

AndroID LocalServerSocket

不,这是广播的基本属性 – 子网中的每个主机(包括发送者)都必须将数据包一直处理到网络堆栈中。 你的选择是:

切换到多播 。 这是首选,因为与广播相比,多播降低了整个网络的负载,并且可以使用IP_MulTICAST_LOOP套接字选项明确控制多播环回。

不要bind(2)发送机器上的目标端口。 这种方法很有效,但是由于它对应用程序设计和/或部署有限制,

绑定到接口,而不仅仅是地址。

#include <net/if.h> #include <socket.h> struct ifreq interface; strcpy(interface.ifr_ifrn.ifrn_name,\”eth0\”); int fd = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP); setsockopt(fd,Sol_SOCKET,SO_BINDTODEVICE,&interface,sizeof(interface)); //… bind(fd,…) …

这样,没有到达指定接口的数据(而是源自它)将不会被接收到。

这里是我的Python套接字库实验的结果。 UDP广播公司是否接收自己发送的消息取决于您将广播套接字绑定到哪个地址。 为了更清楚,广播公司的IP地址是192.168.2.1。

当绑定到\’192.168.2.255\’或\’\’(空地址)时,广播者接收自己发送的消息

当绑定到“192.168.2.1”,“255.255.255.255”或“<广播>”时,广播公司将不接收自身发送的消息

接收者在所有这些情况下都收到广播的UDP消息。

PS测试Python 2.7.9, *** 作系统Raspbian 8(适用于RaspBerry Pi的Debian),linux内核4.4.38

总结

以上是内存溢出为你收集整理的禁用UDP广播的自我接收全部内容,希望文章能够帮你解决禁用UDP广播的自我接收所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞192 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容