当前位置: 技术问答>linux和unix
多网卡接收组播问题
来源: 互联网 发布时间:2016-11-25
本文导语: 我的问题跟下面这个链接的问题完全一样,但下面这个链接没有满意答案, 谁来帮我解答这个问题? http://topic.csdn.net/u/20070520/21/f798b848-997f-4d8e-9084-4d496cc9eec3.html 有两个网卡,有时可以有时不可以从第二个网卡收到...
我的问题跟下面这个链接的问题完全一样,但下面这个链接没有满意答案, 谁来帮我解答这个问题?
http://topic.csdn.net/u/20070520/21/f798b848-997f-4d8e-9084-4d496cc9eec3.html
有两个网卡,有时可以有时不可以从第二个网卡收到组播数据, OS是RHEL 5
http://topic.csdn.net/u/20070520/21/f798b848-997f-4d8e-9084-4d496cc9eec3.html
有两个网卡,有时可以有时不可以从第二个网卡收到组播数据, OS是RHEL 5
|
我也遇到过类似问题,系统起来后,第一次运行程序时,就是收不到数据,第二次就好了。
后来我发现我的原因是一些网络参数在系统启动时没有初始化,而是我在程序中初始化的。所以每次第一次运行就接不到数据。
后来我发现我的原因是一些网络参数在系统启动时没有初始化,而是我在程序中初始化的。所以每次第一次运行就接不到数据。
|
另外组播接收的话,应该绑定到组播地址吧!而不是(htonl(INADDR_ANY))
然后按如下代码在加入到组播组
然后按如下代码在加入到组播组
if(CastMode == MULTICAST){
/* 如果接收为多播,需指定接收的多播组 */
multiAddr = inet_addr(MultiAddr);
multiAddr = htonl(multiAddr);
if((multiAddr & 0xf0000000) == 0xe0000000){
struct ip_mreq ipMreq;
ipMreq.imr_multiaddr.s_addr = htonl(multiAddr);
ipMreq.imr_interface.s_addr = inet_addr(localAddr);
if(setsockopt(sockfd[i], IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&ipMreq, sizeof(ipMreq)) != 0){
printf("[tskIpRev]: Socket Add Membership ERROR!!");
perror(MODULE_NAME);
return 0;;
}
}
}
|
不懂,来学习
|
没用过多网卡,搞不定。。
|
我来观望 顺便学习一下
|
学习啦
|
OK,问题解决,接分~
|
可能配置了多个默认网关导致冲突。
用netstat -r 输出路由表查看。
用netstat -r 输出路由表查看。
|
接分~
|
讲一下如何解决的,接分啊