亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 8361 | 回復: 2
打印 上一主題 下一主題

[ socket ] [多平臺] 接收組播問題 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 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系統(tǒng)下:
      無論指定還是不指定具體的綁定地址,均可以收到發(fā)送到 8888 端口的 組播(232.1.1.1) 廣播(192.168.1.255) 點對點(192.168.1.1)數(shù)據(jù)

在solaris 10 系統(tǒng)下:
      不指定具體的綁定地址,均可以收到發(fā)送到 8888 端口的 組播(232.1.1.1) 廣播(192.168.1.255) 點對點(192.168.1.1)數(shù)據(jù),與windows相同
       指定具體的綁定地址,只能收到發(fā)送到 8888 端口的 點對點(192.168.1.1)數(shù)據(jù),為什么組播收不到了啊,難道solaris平臺下,想接收組播數(shù)據(jù),bind 地址必須為INADDR_ANY ???

請問大家:
          在其它的系統(tǒng)平臺下遇到過類似的問題嗎?  如何解決的? 我只想接收從網(wǎng)絡接口192.168.1.1(多網(wǎng)絡接口)來的組播數(shù)據(jù)(不要點對點的和廣播數(shù)據(jù))

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

論壇徽章:
0
2 [報告]
發(fā)表于 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 [報告]
發(fā)表于 2007-11-21 18:42 |只看該作者
thank you:wink:
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP