1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| #include<stdio.h> #include<stdlib.h> #include<WinSock2.h> #include<iostream> #include<cstring> #pragma comment(lib,"ws2_32.lib") using namespace std;
int main() { WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(1, 1); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { return 0; } if (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) { WSACleanup(); return 0; } printf("server is operating!\n\n"); SOCKET sockSer = socket(AF_INET, SOCK_DGRAM, 0); SOCKADDR_IN addrSer; addrSer.sin_addr.S_un.S_addr = htonl(INADDR_ANY); addrSer.sin_family = AF_INET; addrSer.sin_port = htons(6000); bind(sockSer, (SOCKADDR*)&addrSer, sizeof(SOCKADDR)); SOCKADDR_IN addrClient; int len = sizeof(SOCKADDR); char recvBuf[100]; char sendBuf[100]; char tempBuf[100]; while (1) { recvfrom(sockSer, recvBuf, 100, 0, (SOCKADDR*)&addrClient, &len); if ('q' == recvBuf[0]) { sendto(sockSer, "q", strlen("q") + 1, 0, (SOCKADDR*)&addrClient, len); printf("Chat end!\n"); break; } sprintf_s(tempBuf, "%s say : %s", inet_ntoa(addrClient.sin_addr), recvBuf); printf("%s\n", tempBuf); printf("Please input data: \n"); gets_s(sendBuf); sendto(sockSer, sendBuf, strlen(sendBuf) + 1, 0, (SOCKADDR*)&addrClient, len); } closesocket(sockSer); WSACleanup(); return 0; }
|