Guest User

Untitled

a guest
Aug 17th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/types.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <arpa/inet.h>
  8. #include "../includes/utilities.h"
  9.  
  10. static const int MAXPENDING = 5;
  11.  
  12. int main (int argc, char *argv[])
  13. {
  14. if (argc != 2)
  15. DieWithUserMessage ("Argument(s): ", "<Server Port>");
  16.  
  17. in_port_t servPort = atoi (argv[1]);
  18.  
  19. int servSock;
  20. if ((servSock = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
  21. DieWithSystemMessage ("socket() failed");
  22.  
  23. struct sockaddr_in servAddr;
  24. memset (&servAddr, 0, sizeof (servAddr));
  25. servAddr.sin_family = AF_INET;
  26. servAddr.sin_addr.s_addr = htonl (INADDR_ANY);
  27. servAddr.sin_port = htons (servPort);
  28.  
  29. if (bind (servSock, (struct sockaddr *) &servAddr, sizeof (servAddr)) < 0)
  30. DieWithSystemMessage ("bind() failed");
  31.  
  32. if (listen (servSock, MAXPENDING) < 0)
  33. DieWithSystemMessage ("listen() failed");
  34.  
  35. for (;;) {
  36. struct sockaddr_in clntAddr;
  37. socklen_t clntAddrLen = sizeof (clntAddr);
  38.  
  39. int clntSock = accept (servSock, (struct sockaddr *) &clntAddr,
  40. &clntAddrLen);
  41. if (clntSock < 0)
  42. DieWithSystemMessage ("accept() failed");
  43.  
  44. char clntName[INET_ADDRSTRLEN];
  45. if (inet_ntop (AF_INET, &clntAddr.sin_addr.s_addr, clntName,
  46. sizeof (clntName)) != NULL)
  47. printf ("Handling client: %s/%d\n", clntName, ntohs (clntAddr.sin_port));
  48. else
  49. puts ("Unable to handle client");
  50.  
  51. HandleTCPClient (clntSock);
  52. }
  53.  
  54. return 0;
  55. }
Add Comment
Please, Sign In to add comment