Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.43 KB | None | 0 0
  1. #include <windows.h>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. DWORD WINAPI serverFunction(LPVOID param) {
  7.     SOCKET recvSocket = (SOCKET)param;
  8.     char buffer[1024];
  9.     int result = 0;
  10.     while (strcmp(buffer, "end") && strcmp(buffer, "exit") && result != SOCKET_ERROR) {
  11.         result = recv(recvSocket, buffer, 1024, 0);
  12.         if (result != SOCKET_ERROR) cout << recvSocket << ": " << buffer << "\n";
  13.     }
  14.    
  15.     closesocket(recvSocket);
  16.  
  17.     return 0;
  18. }
  19.  
  20. int main() {
  21.  
  22.     WSADATA wsa;
  23.     SOCKET mainSocket, recvSocket;
  24.  
  25.     if (WSAStartup(MAKEWORD(2,2), &wsa) != 0) {
  26.         cout << "WSAStartup() error: " << WSAGetLastError();
  27.         return 0;
  28.     }
  29.  
  30.    
  31.     mainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  32.     if (mainSocket == INVALID_SOCKET) {
  33.         cout << "mainSocket error: " << WSAGetLastError();
  34.         WSACleanup();
  35.         return 0;
  36.     }
  37.  
  38.     sockaddr_in server;
  39.     server.sin_family = AF_INET;
  40.     server.sin_addr.s_addr = inet_addr("127.0.0.1");
  41.     server.sin_port = htons(12000);
  42.  
  43.     if (bind(mainSocket, (SOCKADDR*)&server, sizeof(server)) == SOCKET_ERROR) {
  44.         cout << "bind() error: " << WSAGetLastError();
  45.         closesocket(mainSocket);
  46.         WSACleanup();
  47.         return 0;
  48.     }
  49.  
  50.     DWORD threadCounter = 1;
  51.  
  52.     listen(mainSocket, 100);
  53.     while (true) {
  54.        
  55.         recvSocket = accept(mainSocket, NULL, NULL);
  56.         ++threadCounter;
  57.         CreateThread(0, 0, serverFunction, (LPVOID)recvSocket, 0, &threadCounter);
  58.    
  59.     }
  60.     closesocket(mainSocket);
  61.     WSACleanup();
  62.  
  63.     system("pause");
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement