免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8333 | 回复: 2
打印 上一主题 下一主题

[ socket ] [多平台] 接收组播问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-20 23:40 |只看该作者 |倒序浏览
简单代码如下:
                recv_sock = socket (AF_INET, SOCK_DGRAM, 0);
/*
* Fill in the address structure for local_addr, and bind it.
*/
                bzero(&local_addr, sizeof(local_addr));
                local_addr.sin_family      = AF_INET;
                local_addr.sin_port        = htons( 8888 ) ;
                local_addr.sin_addr.s_addr = INADDR_ANY;                 //1//不指定具体的绑定地址
//             local_addr.sin_addr.s_addr = inet_addr("192.168.1.1" ) ; ///2//指定具体的绑定地址
                retval = bind(recv_sock, (struct sockaddr *)&local_addr, sizeof(local_addr) );

/*
* add local address to  multicast membership if want to receive multicast packets.
*/
                mr.imr_multiaddr.s_addr = inet_addr("232.1.1.1" ) ;
                mr.imr_interface.s_addr = inet_addr("192.168.1.1 " );
                retval = setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr, sizeof(mr));
/*
* begin to receive packets.
*/  
                retval  = recvfrom(recv_sock, RcvBuf, buflen, 0,(struct  sockaddr *)&remote_addr, &fromlen);
在windows 2000系统下:
      无论指定还是不指定具体的绑定地址,均可以收到发送到 8888 端口的 组播(232.1.1.1) 广播(192.168.1.255) 点对点(192.168.1.1)数据

在solaris 10 系统下:
      不指定具体的绑定地址,均可以收到发送到 8888 端口的 组播(232.1.1.1) 广播(192.168.1.255) 点对点(192.168.1.1)数据,与windows相同
       指定具体的绑定地址,只能收到发送到 8888 端口的 点对点(192.168.1.1)数据,为什么组播收不到了啊,难道solaris平台下,想接收组播数据,bind 地址必须为INADDR_ANY ???

请问大家:
          在其它的系统平台下遇到过类似的问题吗?  如何解决的? 我只想接收从网络接口192.168.1.1(多网络接口)来的组播数据(不要点对点的和广播数据)

[ 本帖最后由 ammy 于 2007-11-20 23:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-11-21 10:33 |只看该作者
我在linux下台下也必须bind INADDR_ANY.
具体只从哪个ip接收组播地址,是通过你后面的这几行绑定的:
                mr.imr_multiaddr.s_addr = inet_addr("232.1.1.1" ) ;
                mr.imr_interface.s_addr = inet_addr("192.168.1.1 " );
                retval = setsockopt(recv_sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr, sizeof(mr));

论坛徽章:
0
3 [报告]
发表于 2007-11-21 18:42 |只看该作者
thank you:wink:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP