最近公司项目做跨平台,在Linux下遇到了组播数据接收的问题总结。
程序大概讲下,服务器A通过组播发出数据,服务器B接收A发出的组播数据,windows下收发一切正常。
在向linux(ubuntu16.04)移植时,服务器B接收不到组播数据,使用tcpdump是可以抓到组播数据的。
尝试了网上找到的很多方法,都没有解决,最后用了下面方法可以收到数据了:
1.组播地址加到路由表
2.路由表增加一个地址为0.0.0.0且掩码0.0.0.0的默认路由
3.程序中接收端socket绑定的本机地址改为0.0.0.0
运行OK。
从现象看还是路由表配置的问题,暂且如此修改可以收到数据了,收不到数据的根本原因还需调查。