#include<iostream> #include<WinSock2.h> using namespace std;
#pragma comment(lib,"ws2_32.lib")
int main() { cout << "Server" << endl; WORD wVersionRequested; WSADATA wsadata; int err; wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsadata); if (err) { printf("WSAStartup errnum: %d\n", GetLastError()); return err; }
if (LOBYTE(wsadata.wVersion) != 2 || HIBYTE(wsadata.wVersion) != 2) { printf("LOBYTE errnum: %d\n", GetLastError()); WSACleanup(); return -1; }
SOCKET sockSrv; sockSrv = socket(AF_INET, SOCK_DGRAM, 0); if (INVALID_SOCKET == sockSrv) { printf("socket err : %d", 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(9988);
if (SOCKET_ERROR == bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR))) { printf("bind err : %d", GetLastError()); return -1; }
SOCKADDR_IN addrCli; int len = sizeof(SOCKADDR_IN); char recvBuf[100] = { 0 }; char sendBuf[100] = { 0 };
while (1) { recvfrom(sockSrv, recvBuf, 100, 0, (SOCKADDR*)&addrCli, &len); cout << recvBuf << endl; sprintf_s(sendBuf, 100, "Ack:%s", recvBuf); sendto(sockSrv, sendBuf,sizeof(sendBuf)+ 1, 0, (SOCKADDR*)&addrCli, len);
} closesocket(sockSrv); system("pause"); }
|