网络编程之---广播和IP多播
生活随笔
收集整理的這篇文章主要介紹了
网络编程之---广播和IP多播
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
一.廣播
1.接收
void main() {SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);// 首先要綁定一個本地地址,指明廣播端口號SOCKADDR_IN sin;sin.sin_family = AF_INET;sin.sin_addr.S_un.S_addr = INADDR_ANY; sin.sin_port = ::ntohs(4567);if(::bind(s, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR){printf(" bind() failed \n");return;}// 接收廣播printf(" 開始在4567端口接收廣播數(shù)據(jù)... \n\n");SOCKADDR_IN addrRemote; int nLen = sizeof(addrRemote);char sz[256];while(TRUE){int nRet = ::recvfrom(s, sz, 256, 0, (sockaddr*)&addrRemote, &nLen);if(nRet > 0){sz[nRet] = '\0';printf(sz);}} }2.發(fā)送
void main() {SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);// 有效SO_BROADCAST選項BOOL bBroadcast = TRUE;::setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(BOOL)); // 設(shè)置廣播地址,這里的廣播端口號(電臺)是4567SOCKADDR_IN bcast;bcast.sin_family = AF_INET;bcast.sin_addr.s_addr = INADDR_BROADCAST; // ::inet_addr("255.255.255.255");bcast.sin_port = htons(4567);// 發(fā)送廣播printf(" 開始向4567端口發(fā)送廣播數(shù)據(jù)... \n \n");char sz[] = "This is just a test. \r\n";while(TRUE){::sendto(s, sz, strlen(sz), 0, (sockaddr*)&bcast, sizeof(bcast));::Sleep(5000);} }二.IP多播
1.加入多播組并接收數(shù)據(jù)
2.發(fā)送廣播
同上
設(shè)置SO_REUSEADDR,則允許多個進程綁定到這個端號,這樣加入到同個端口的組都可以接收到數(shù)據(jù)
三.源地址的IP多播
即可指定接收組內(nèi)特定IP地址的消息
c#參考:http://www.cnblogs.com/xuhx/archive/2004/06/23/18150.html
http://www.cnblogs.com/xuhx/archive/2004/06/27/18960.html
Windows網(wǎng)絡(luò)與通信程序設(shè)計 第5章
轉(zhuǎn)載于:https://www.cnblogs.com/Clingingboy/archive/2011/06/21/2086349.html
總結(jié)
以上是生活随笔為你收集整理的网络编程之---广播和IP多播的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL2005 数据库数据同步
- 下一篇: 电子商务之网购魅力何在?(网购用户行为分