Advertisement
Guest User

echosrv.c

a guest
Apr 26th, 2014
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <arpa/inet.h>
  7. #include <unistd.h>
  8. #include <string.h>
  9.  
  10. #define SERVERPORT 2050
  11. #define SERVERADDRESS "127.0.0.1"
  12.  
  13. int main(int argc, char * argv[])
  14. {
  15.     int server_socket, connect_socket, retcode;
  16.     socklen_t client_addr_len;
  17.     struct sockaddr_in server_addr, client_addr;
  18.     char buffer[1];
  19.     char* client_address;
  20.    
  21.     if (((server_socket = socket(AF_INET,SOCK_STREAM,0))) == -1)
  22.     {
  23.         perror("Error in server socket()");
  24.         exit(-1);
  25.     }
  26.        
  27.     server_addr.sin_family = AF_INET;
  28.     server_addr.sin_port = htons(SERVERPORT);
  29.     server_addr.sin_addr.s_addr = inet_addr(SERVERADDRESS);
  30.    
  31.     if ((retcode = bind (server_socket, (struct sockaddr*)  &server_addr, sizeof(server_addr))) == -1)
  32.     {
  33.         perror("Error in server socket bind()");
  34.         exit(-1);
  35.     }
  36.    
  37.     if ((retcode = listen(server_socket, 1)) == -1)
  38.     {
  39.         perror("Error in server socket listen()");
  40.         exit(-1);
  41.     }
  42.    
  43.     printf("Server ready (CTRL-C quits)\n");
  44.    
  45.     client_addr_len = sizeof(client_addr);
  46.    
  47.     while (1)
  48.     {
  49.         if ((connect_socket = accept(server_socket, (struct sockaddr *)&client_addr, &client_addr_len)) == -1)
  50.         {
  51.             perror("Error in accept()");
  52.             close(server_socket);
  53.             exit(-1);
  54.         }
  55.        
  56.         client_address = inet_ntoa(client_addr.sin_addr);
  57.        
  58.         printf("\nClient @ %s connects on socket %d\n", client_address, connect_socket);
  59.        
  60.         while ((read(connect_socket, buffer, 1)) != -1)
  61.         {
  62.             printf("reading 1 byte\n");
  63.             write(connect_socket, buffer, 1);
  64.         }
  65.         printf("exiting\n");
  66.  
  67.         //close(connect_socket);
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement