4sn3z

Socket Server2

May 31st, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.59 KB | None | 0 0
  1. /* tcpserver.c */
  2.  
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. #include <arpa/inet.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <unistd.h>
  10. #include <errno.h>
  11. #include <string.h>
  12.  
  13.  
  14. int main()
  15. {
  16.         int sock, connected, bytes_recieved , true = 1;  
  17.         char send_data [1024] , recv_data[1024];      
  18.  
  19.         struct sockaddr_in server_addr,client_addr;    
  20.         int sin_size;
  21.        
  22.         if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
  23.             perror("Socket");
  24.             exit(1);
  25.         }
  26.  
  27.         if (setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&true,sizeof(int)) == -1) {
  28.             perror("Setsockopt");
  29.             exit(1);
  30.         }
  31.        
  32.         server_addr.sin_family = AF_INET;        
  33.         server_addr.sin_port = htons(4570);    
  34.         server_addr.sin_addr.s_addr = INADDR_ANY;
  35.         bzero(&(server_addr.sin_zero),8);
  36.  
  37.         if (bind(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))
  38.                                                                        == -1) {
  39.             perror("Unable to bind");
  40.             exit(1);
  41.         }
  42.  
  43.         if (listen(sock, 5) == -1) {
  44.             perror("Listen");
  45.             exit(1);
  46.         }
  47.        
  48.     printf("\nTCPServer Waiting for client on port 5000");
  49.         fflush(stdout);
  50.  
  51.  
  52.         while(1)
  53.         {  
  54.  
  55.             sin_size = sizeof(struct sockaddr_in);
  56.  
  57.             connected = accept(sock, (struct sockaddr *)&client_addr,&sin_size);
  58.  
  59.             printf("\n I got a connection from (%s , %d)",
  60.                    inet_ntoa(client_addr.sin_addr),ntohs(client_addr.sin_port));
  61.  
  62.             while (1)
  63.             {
  64.               printf("\n SEND (q or Q to quit) : ");
  65.               gets(send_data);
  66.              
  67.               if (strcmp(send_data , "q") == 0 || strcmp(send_data , "Q") == 0)
  68.               {
  69.                 send(connected, send_data,strlen(send_data), 0);
  70.                 close(connected);
  71.                 break;
  72.               }
  73.                
  74.               else
  75.                  send(connected, send_data,strlen(send_data), 0);  
  76.  
  77.               bytes_recieved = recv(connected,recv_data,1024,0);
  78.  
  79.               recv_data[bytes_recieved] = '\0';
  80.  
  81.               if (strcmp(recv_data , "q") == 0 || strcmp(recv_data , "Q") == 0)
  82.               {
  83.                 close(connected);
  84.                 break;
  85.               }
  86.  
  87.               else
  88.               printf("\n RECIEVED DATA = %s " , recv_data);
  89.               fflush(stdout);
  90.             }
  91.         }      
  92.  
  93.       close(sock);
  94.       return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment