c++中UDP通信实现




client端

#include
#include
#pragma comment(lib,"ws2_32.lib")

void main() 
WORD wVersionRequested; 
WSADATA wsaData; 
int err; 

wVersionRequested=MAKEWORD(1,1); 

err = WSAStartup(wVersionRequested, &wsaData); 
if (err != 0) 

return; 

if (LOBYTE(wsaData.wVersion)!=1 || 
HIBYTE(wsaData.wVersion)!=1) 
WSACleanup(); 
return; 

SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];

recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
printf("%s\n",recvBuf);
closesocket(sockSrv);
WSACleanup();
}

server端

#include
#include
#pragma comment(lib,"ws2_32.lib")

void main() 
WORD wVersionRequested; 
WSADATA wsaData; 
int err; 

wVersionRequested=MAKEWORD(1,1); 

err = WSAStartup(wVersionRequested, &wsaData); 
if (err != 0) 

return; 

if (LOBYTE(wsaData.wVersion)!=1 || 
HIBYTE(wsaData.wVersion)!=1) 
WSACleanup(); 
return; 
}
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.0.104");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

sendto(sockClient,"Hello",strlen("Hello")+1,0,
(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
closesocket(sockClient);
WSACleanup();
}

你可能感兴趣的:(以太网通信)