[C++]簡單的udp通信


UDPclient.cpp

#include<WINSOCK2.H>
#include<iostream>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;//初始化
SOCKET SendSocket;
sockaddr_in RecvAddr;//服務器地址
int Port=4000;//服務器監聽地址
char SendBuf[1024];//發送數據的緩沖區
int BufLen=1024;//緩沖區大小
//初始化Socket
WSAStartup(MAKEWORD(2,2),&wsaData);
//創建Socket對象
SendSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
//設置服務器地址
RecvAddr.sin_family=AF_INET;
RecvAddr.sin_port=htons(Port);
RecvAddr.sin_addr.s_addr=inet_addr("192.168.137.1");
//向服務器發送數據報
printf("Sending a datagram to the receiver...\n");
sendto(SendSocket,SendBuf,BufLen,0,(SOCKADDR *)&RecvAddr,sizeof(RecvAddr));
//發送完成,關閉Socket
printf("finished sending,close socket.\n");
closesocket(SendSocket);
printf("Exting.\n");
WSACleanup();
return 0;
}

 


UDPserver.cpp

#include<WINSOCK2.H>
#include<iostream>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
WSADATA wsaData;//初始化
SOCKET RecvSocket;
sockaddr_in RecvAddr;//服務器地址
int Port=4000;//服務器監聽地址
char RecvBuf[1024];//發送數據的緩沖區
int BufLen=1024;//緩沖區大小
sockaddr_in SenderAddr;
int SenderAddrSize=sizeof(SenderAddr);
//初始化Socket
WSAStartup(MAKEWORD(2,2),&wsaData);
//創建接收數據報的socket
RecvSocket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
//將socket與制定端口和0.0.0.0綁定
RecvAddr.sin_family=AF_INET;
RecvAddr.sin_port=htons(Port);
RecvAddr.sin_addr.s_addr=htonl(INADDR_ANY);
bind(RecvSocket,(SOCKADDR *)&RecvAddr,sizeof(RecvAddr));
//調用Recvfrom函數在綁定的socket上接收數據
printf("receiving datagrams...\n");
recvfrom(RecvSocket,RecvBuf,BufLen,0,(SOCKADDR *)&SenderAddr,&SenderAddrSize);
//關閉socket,結束接收數據
printf("finished receiving,closing socket..\n");
closesocket(RecvSocket);
//釋放資源,退出
printf("Exiting.\n");
WSACleanup();
return 0;
}

 

另附:

windows上簡單的TCP/UDP

linux上簡單的TCP/UDP


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM