server.cpp中代码:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main() {
WSADATA d;
WORD w = MAKEWORD(2, 0);
WSAStartup(w, &d);
SOCKET s = socket(AF_INET, SOCK_DGRAM, 0);
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = INADDR_ANY;
addr.sin_port = htons(9999);
bind(s, (sockaddr*)&addr, sizeof(addr));
sockaddr_in addrClient;
int sockLen = sizeof(sockaddr_in);
char bufrecv[512] = { 0 };
char bufsend[512] = { 0 };
cout << "UDP Server is start and bind to 9999:" << endl;
while (true) {
int recvLen = recvfrom(s, bufrecv, sizeof(bufrecv), 0, (sockaddr*)&addrClient, &sockLen);
if (recvLen > 0) {
cout << "服务器接收到的数据:" << bufrecv << endl;
}
memset(bufrecv, 0, sizeof(bufrecv));
cout << "服务器发送数据:";
gets_s(bufsend, 512);
sendto(s, bufsend, strlen(bufsend), 0, (sockaddr*)&addrClient, sockLen);
memset(bufsend, 0, sizeof(bufsend));
}
closesocket(s);
WSACleanup();
system("pause");
return 0;
}
client.cpp中代码:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include<iostream>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main() {
WSADATA d;
WORD w = MAKEWORD(2, 0);
WSAStartup(w, &d);
SOCKET s = socket(AF_INET, SOCK_DGRAM, 0);
sockaddr_in serverAddr;
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
serverAddr.sin_port = htons(9999);
int len = sizeof(serverAddr);
char sendbuf[512] = { 0 };
char recvBuf[512] = { 0 };
cout << "UDP Client is starting :" << endl;
while (true) {
cout << "客户端发送数据:" ;
gets_s(sendbuf, 512);
int kk = sendto(s, sendbuf, strlen(sendbuf), 0, (sockaddr*)&serverAddr, len);
memset(sendbuf, 0, sizeof(sendbuf));
int recvLen = recvfrom(s, recvBuf, sizeof(recvBuf), 0, (sockaddr*)&serverAddr, &len);
if (recvLen > 0) {
cout << "客户端接收到的数据:" << recvBuf << endl;
}
memset(recvBuf, 0, sizeof(recvBuf));
}
closesocket(s);
WSACleanup();
system("pause");
return 0;
}