UDP套接字(多播)不接收数据(Ubuntu)

nie*_*lsj 3 c++ sockets ubuntu

我正试图在Linux(Ubuntu)上建立一个小测试应用程序,基于我为Winsock编写的一些代码(并且有效).就目前而言,它只是一个小测试,创建一个套接字(并且看似成功连接)只是永久挂在recv()而不是接收数据报.这是一个普通的阻塞插座.

这是我创建它的方式:

http://pastebin.com/kcCbgxbB

测试了一些其他事项: - 港口是开放的. - 其他应用程序能够成功从多播地址接收数据.

很明显我忽略了一些东西.非常感谢帮助:-)

epx*_*epx 5

在Unix系统中,当使用套接字进行多播时,应该绑定到INADDR_ANY,而不是绑定到接口.

通过接口进行多播过滤(即不从指定接口以外的其他接口接收mcast)已经到位,因为您正确填充了imr_interface.