Advertisement
NacOJerk

Winsock2

Jul 29th, 2017
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.68 KB | None | 0 0
  1. short setupServer(int port)
  2. {
  3.     SOCKET server_socket, client_socket;
  4.     WSADATA wsa;
  5.     struct sockaddr_in server_addr, client_addr;
  6.     int c;
  7.     char client_message[2000];
  8.     int recv_size;
  9.     printf("\nInitialising Winsock...");
  10.     if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
  11.     {
  12.         printf("Failed. Error Code : %d", WSAGetLastError());
  13.         return 1;
  14.     }
  15.  
  16.     printf("Initialised.\n");
  17.  
  18.     //Create a socket
  19.     if ((server_socket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
  20.     {
  21.         printf("Could not create socket : %d", WSAGetLastError());
  22.     }
  23.  
  24.     printf("Server Socket created.\n");
  25.  
  26.     memset(&server_addr, 0, sizeof(server_addr));
  27.     //Prepare the sockaddr_in structure
  28.     server_addr.sin_family = AF_INET;
  29.     server_addr.sin_addr.s_addr = INADDR_ANY;
  30.     server_addr.sin_port = htons(port);
  31.  
  32.     //Bind
  33.     if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == SOCKET_ERROR)
  34.     {
  35.         printf("Bind failed with error code : %d", WSAGetLastError());
  36.     }
  37.  
  38.     printf("Bind to port %d done.\n", port);
  39.  
  40.     //Listen to incoming connections
  41.     listen(server_socket, 3);
  42.  
  43.     //Accept and incoming connection
  44.     puts("Waiting for incoming connection...");
  45.  
  46.     c = sizeof(struct sockaddr_in);
  47.     while ((client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &c)) != INVALID_SOCKET)
  48.     {
  49.         puts("Connection accepted");
  50.         if ((recv_size = recv(client_socket, client_message, 2000, 0)) == SOCKET_ERROR)
  51.         {
  52.             puts("recv failed");
  53.             break;
  54.         }
  55.         client_message[recv_size] = '\0';
  56.         strcpy_s(path, MAX_PATH_LEN, client_message);
  57.         break;
  58.     }
  59.  
  60.     if (client_socket == INVALID_SOCKET)
  61.     {
  62.         printf("accept failed with error code : %d", WSAGetLastError());
  63.         return 1;
  64.     }
  65.  
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement