UDPClient.cpp
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
cout << "UDPClient Start!!!" << endl;
WORD WVersionRequested;
WSADATA wsaData;
int err;
WVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(WVersionRequested, &wsaData);
if (err != 0)
{
printf("WSAStartup errorNum = %d\n", GetLastError());
return err;
}
if (LOBYTE(wsaData.wVersion) != 2, HIBYTE(wsaData.wVersion) != 2)
{
printf("LOBYTE errorNum = %d\n", GetLastError());
WSACleanup();
return -1;
}
SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM, 0);
if (INVALID_SOCKET == sockSrv)
{
printf("socket errorNo = %d\n", GetLastError());
return -1;
}
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6001);
SOCKADDR_IN addrCli;
int len = sizeof(SOCKADDR);
char sendBuf[100] = "hello";
char recBuf[100] = { 0 };
sendto(sockSrv, sendBuf, strlen(sendBuf), 0, (SOCKADDR*)&addrSrv, len);
recvfrom(sockSrv, recBuf, 100, 0, (SOCKADDR*)&addrCli, &len);
cout << recBuf << endl;
closesocket(sockSrv);
WSACleanup();
system("pause");
return 0;
}
UDPServer.cpp
#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
cout << "UDPServer Start!!!" << endl;
WORD WVersionRequested;
WSADATA wsaData;
int err;
WVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(WVersionRequested, &wsaData);
if (err != 0)
{
printf("WSAStartup errorNum = %d\n", GetLastError());
return err;
}
if (LOBYTE(wsaData.wVersion) != 2, HIBYTE(wsaData.wVersion) != 2)
{
printf("LOBYTE errorNum = %d\n", GetLastError());
WSACleanup();
return -1;
}
SOCKET sockSrv = socket(AF_INET, SOCK_DGRAM,0);
if (INVALID_SOCKET == sockSrv)
{
printf("socket errorNo = %d\n", GetLastError());
return -1;
}
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6001);
if (SOCKET_ERROR==bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)))
{
printf("bind errorNo=%d\n", GetLastError());
return -1;
}
SOCKADDR_IN sockCli;
int len = sizeof(SOCKADDR_IN);
char recvBuf[100] = { 0 };
char sendBuf[100] = { 0 };
while (true)
{
cout << "start recvform" << endl;
recvfrom(sockSrv, recvBuf, 100, 0, (SOCKADDR*)&sockCli, &len);
cout << "recvfrom end" << endl;
cout << recvBuf << endl;
sprintf_s(sendBuf, 100, "你是XXX吗???");
sendto(sockSrv, sendBuf, strlen(sendBuf)+1, 0, (SOCKADDR*)&sockCli, len);
}
closesocket(sockSrv);
WSACleanup();
system("pause");
return 0;
}