Advertisement
screennameless

Listener Function

Oct 17th, 2011
1,140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.33 KB | None | 0 0
  1. void *listener(int *sock)
  2. {
  3.     char message[138];
  4.     int newsock, sockreturn;
  5.     socklen_t clilen;
  6.    
  7.     writelog("Starting server...\n");
  8.    
  9.     struct sockaddr_in cliaddr;
  10.     struct addrinfo a, *b;
  11.    
  12.     memset(&a, 0, sizeof(a));
  13.     a.ai_family = AF_UNSPEC;
  14.     a.ai_socktype = SOCK_STREAM;
  15.     a.ai_flags = AI_PASSIVE;
  16.    
  17.     memset(&cliaddr, 0, sizeof(cliaddr));
  18.     cliaddr.sin_family = AF_INET;
  19.     cliaddr.sin_addr.s_addr = htonl(INADDR_ANY);
  20.     cliaddr.sin_port = htons(22580);
  21.    
  22.     getaddrinfo(NULL, "22580", &a, &b);
  23.    
  24.     *sock = socket(b->ai_family, b->ai_socktype, b->ai_protocol);
  25.    
  26.     if(*sock == -1) {
  27.         writelog("Server: couldn't create a socket.\n");
  28.         return NULL;
  29.     }
  30.    
  31.     if(bind(*sock, b->ai_addr, b->ai_addrlen) == -1) {
  32.         writelog("Server: couldn't bind to port 25580.\n");
  33.         return NULL;
  34.     }
  35.    
  36.     if(listen(*sock, 5) == -1) {
  37.         writelog("Server: couldn't listen on port 25580.\n");
  38.         return NULL;
  39.     }
  40.    
  41.     writelog("Server: listening on port 22580.\n");
  42.     while(1) {
  43.         clilen = sizeof(cliaddr);
  44.         newsock = accept(*sock, (struct sockaddr *)&cliaddr, &clilen);
  45.         if(newsock < 0) writelog("Server: error on accept.\n");
  46.         bzero(message, 130);
  47.         sockreturn = read(newsock, message, 130);
  48.         if(sockreturn < 0) writelog("Server: error reading from socket.\n");
  49.        
  50.         processServerMessage(message);
  51.         close(newsock);
  52.     }
  53.    
  54.    
  55.     return NULL;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement