【发布时间】:2013-11-26 14:47:26
【问题描述】:
举个具体的例子,假设在同一个端口上有 2 个 mcast IP(ip1、ip2)。我想运行两个不同的进程,一个监听 ip1(而不是 ip2),另一个监听 ip2(而不是 ip1)。所以我在其他进程中调用了(ip1,port)和(ip2,port)绑定,而不是((INADDR_ANY,port)。
原则上这很好用,但假设不是 2 个 IP,而是 100 个 IP,那么我最终创建了 100 个 UDP 套接字,现在我的进程无法很好地处理这个问题,我看到很多数据包丢失。
基本上,如果我简单地绑定到(INADDR_ANY,端口)然后多播加入 50 个 IP,它可以正常工作,但如果我创建 50 个不同的套接字,则它不会。
是预期的吗?带有通配符绑定的套接字是否比特定地址绑定更有效或性能下降是因为现在有这么多套接字,现在选择和轮询事情需要很多时间?
有没有什么方法可以让我不需要创建这么多的套接字和进程也不会获取其他进程的数据?
【问题讨论】:
标签: linux sockets udp multicast