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廣播的傳送和接收(iOS + AsyncUdpSocket)下篇UDPiOS
- Udp廣播的傳送與接收(C#+UdpClient) 上篇UDPC#client
- UDP介紹及UDP傳送端和接收端廣播程式碼UDP
- 非同步 SOCKET 程式設計 - 傳送和接收資料 (轉)非同步程式設計
- 廣播接收器——接收系統廣播
- android: 傳送自定義廣播Android
- Go的Channel傳送和接收Go
- Java 基於UDP 實現單播、組播、廣播 Socket 程式設計JavaUDP程式設計
- java傳送接收組播(多播)資料包(UDP包)JavaUDP
- windows socket簡單使用--實現客戶端連結服務端併傳送和接收資料Windows客戶端服務端
- 兩個app間傳送廣播(動態)APP
- 不同的activity使用bundle物件傳值給廣播接收器物件
- android: 接收系統廣播Android
- PHP傳送和接收POST資料PHP
- 使用 Laravel 廣播事件實現基於 Socket.io 的實時訊息通知Laravel事件
- 使用python傳送和接收郵件Python
- 0229-UDP 傳送和接收UDP
- Java入門:UDP協議傳送/接收資料實現JavaUDP協議
- Java入門:TCP協議傳送/接收資料實現JavaTCP協議
- 用張量廣播機制實現神經網路反向傳播神經網路反向傳播
- Socket 傳送檔案
- 0230-TCP 傳送和接收TCP
- MPTCP 原始碼分析(四) 傳送和接收資料TCP原始碼
- Asp.net 利用Jquery Ajax傳送和接收DataTableASP.NETjQuery
- 使用python傳送郵件和接收郵件Python
- 組播和廣播的區別
- 利用ASP傳送和接收XML資料的處理方法XML
- Udp接收和傳送的多執行緒進行(新手)UDP執行緒
- .NET Core 波場鏈離線簽名、廣播交易(傳送 TRX和USDT)筆記筆記
- Laravel 廣播入門,彈幕的實現Laravel
- ServerSocket實現簡單的廣播系統Server
- 單播、多播(組播)和廣播的區別
- Android-Broadcast Receiver(廣播接收器)AndroidAST
- 安卓開發之廣播接收器BroadcastReceiver安卓AST
- PHP-Socket服務端客戶端傳送接收通訊例項詳解PHP服務端客戶端
- 用Socket實現點對點的檔案傳輸 (轉)
- C# Socket 檔案傳送傳輸C#