SOCKET實現廣播(BoardCast)的傳送和接收 (轉)
這兩天很多人在問怎麼樣用SOCKET實現廣播(BoardCast)
正好我做過這方面的,這裡用最簡單的程式碼寫一個廣播傳送和接受的例子:
//////
//傳送端程式
#include
#include
int main(int argc, char* argv[])
{
WSADATA wsaData; //指向WinSocket資訊結構的指標
SOCKET sockListener;
SOCKADDR_IN sin,saUdpServ;
BOOL fBroadcast = TRUE;
char senuff[1024];
int nSize;
int ncount=0;
if(Wtartup(MAKE( 1, 1 ), &wsaData )!=0)//進行WinSocket的初始化
{
printf("Can't initiates socket!Program stop.n");//初始化失敗返回-1
return -1;
}
sockListener=socket(PF_,SOCK_DGRAM,0);
setsockopt ( sockListener,SOL_SOCKET,SO_BROADCAST,
(CHAR *)&fBroadcast,sizeof ( BOOL ));
sin.sin_family = AF_INET;
sin.sin_port = htons(0);
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind( sockListener, (SOCKADDR *)&sin, sizeof(sin))!=0)
{
printf("Can't bind socket to local port!Program stop.n");//初始化失敗返回-1
return -1;
}
saUdpServ.sin_family = AF_INET;
saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST );
saUdpServ.sin_port = htons (7001);//傳送用的埠,可以根據需要更改
nSize = sizeof ( SOCKADDR_IN );
while(1)
{
sprintf(sendBuff,"Message %d",ncount++);
sendto ( sockListener,sendBuff,
lstrlen (sendBuff),
0,
(SOCKADDR *) &saUdpServ,
sizeof ( SOCKADDR_IN ));
printf("%sn",sendBuff);
}
return 0;
}
/////////////////////
//接收
#include
#include
#include
int main(int argc, char* argv[])
{
WSADATA wsaData; //指向WinSocket資訊結構的指標
SOCKET sockListener;
SOCKADDR_IN sin,saClient;
char cRecvBuff[1024];
int nSize,nbSize;
int iAddrLen=sizeof(saClient);
if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//進行WinSocket的初始化
{
printf("Can't initiates windows socket!Program stop.n");//初始化失敗返回-1
return -1;
}
sockListener=socket(AF_INET, SOCK_DGRAM,0);
sin.sin_family = AF_INET;
sin.sin_port = htons(7001);//傳送端使用的傳送埠,可以根據需要更改
sin.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind( sockListener, (SOCKADDR FAR *)&sin, sizeof(sin))!=0)
{
printf("Can't bind socket to local port!Program stop.n");//初始化失敗返回-1
return -1;
}
while(1)
{
nSize = sizeof ( SOCKADDR_IN );
if((nbSize=recvfrom (sockListener,cRecvBuff,1024,0,
(SOCKADDR FAR *) &saClient,&nSize))==SOCKET_ERROR)
{
printf("Recive Error");
break;
}
cRecvBuff[nbSize] = '';
printf("%sn",cRecvBuff);
}
return 0;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992490/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- VC UDP接收 傳送 廣播UDP
- UDP介紹及UDP傳送端和接收端廣播程式碼UDP
- 廣播接收器——接收系統廣播
- Go的Channel傳送和接收Go
- Java 基於UDP 實現單播、組播、廣播 Socket 程式設計JavaUDP程式設計
- 0229-UDP 傳送和接收UDP
- 0230-TCP 傳送和接收TCP
- 排查MQ訊息傳送和接收MQ
- Java入門:UDP協議傳送/接收資料實現JavaUDP協議
- Java入門:TCP協議傳送/接收資料實現JavaTCP協議
- 如何透過簡訊轉發在iPad和Mac上傳送和接收簡訊iPadMac
- 利用ASP傳送和接收XML資料的處理方法XML
- Udp接收和傳送的多執行緒進行(新手)UDP執行緒
- 如何透過文字服務轉發在iPad和Mac上傳送和接收簡訊iPadMac
- 用張量廣播機制實現神經網路反向傳播神經網路反向傳播
- C# Socket 檔案傳送傳輸C#
- 網路核心之TCP是如何傳送和接收訊息的TCP
- Android-Broadcast Receiver(廣播接收器)AndroidAST
- golang接收alertmanager的告警併傳送釘釘Golang
- 【測試】echo傳送和接收TCP/UDP資料包|shell 傳送TCP/UDP資料包TCPUDP
- .NET Core 波場鏈離線簽名、廣播交易(傳送 TRX和USDT)筆記筆記
- python實現郵件的傳送Python
- 簡訊傳送機的實現
- cURL實現傳送Get和Post請求(PHP)PHP
- Android 基於Netty的訊息推送方案之字串的接收和傳送(三)AndroidNetty字串
- SpringBoot專案實現檔案上傳和郵件傳送Spring Boot
- 玩轉 PHP 網路程式設計全套之資料接收與傳送PHP程式設計
- Laravel 廣播入門,彈幕的實現Laravel
- ServerSocket實現簡單的廣播系統Server
- 正向傳播和反向傳播反向傳播
- Android8 自定義廣播接收不到的問題Android
- SpringBoot 實現傳送簡訊Spring Boot
- python實現傳送郵件Python
- 使用postman傳送資料,springmvc接收資料的問題PostmanSpringMVC
- BGP檢視從鄰居接收/傳送的路由資訊路由
- iOS12系統應用傳送普通郵實現傳送iOS
- 公眾號傳送模板資訊java實現(主動傳送)Java
- oracle 傳送郵件 實現方法Oracle
- 043-socket程式設計傳送GET請求程式設計