Guest User

Untitled

a guest
Feb 1st, 2013
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.70 KB | None | 0 0
  1. #include <sys/socket.h> // for socket(), bind(), listen(), accept()
  2. #include <netinet/in.h> // for PF_INET, SOCK_STREAM, IPPROTO_TCP
  3. #include <stdio.h>  // for printf(), perror()
  4. #include <unistd.h> // for read(), write(), close()
  5. #include <string.h> // for bzero()
  6.  
  7. #define DEMO_PORT 9738
  8.  
  9. int main( void )
  10. {
  11.     //-----------------------------------------
  12.     // create an unnamed socket for the server
  13.     //-----------------------------------------
  14.     int sock = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );
  15.     if ( sock < 0 )
  16.     {
  17.         perror( "opening stream socket" );
  18.         return  -1;
  19.     }
  20.     printf( "\nsock=%d \n", sock );
  21.    
  22.     //----------------------------------------
  23.     // construct a name for the server socket
  24.     //----------------------------------------
  25.     struct sockaddr_in  self;
  26.     socklen_t       nlen = sizeof self;
  27.     bzero( &self, sizeof self );
  28.     self.sin_family = AF_INET;
  29.     self.sin_port = htons( DEMO_PORT );
  30.     self.sin_addr.s_addr = htonl( INADDR_ANY );
  31.     if ( bind( sock, (sockaddr *)&self, nlen ) < 0 )
  32.     {
  33.         perror( "bind failed" );
  34.         return  -1;
  35.     }
  36.     printf( "bind succeeded port: %d\n",DEMO_PORT);
  37.    
  38.     //---------------------------------------------------------
  39.     // now create a connection queue and wait for some clients
  40.     //---------------------------------------------------------
  41.     if ( listen( sock, 5 ) < 0 )
  42.     {
  43.         perror( "listen failed" );
  44.         return  -1;
  45.     }
  46.     printf( "listen succeeded \n" );
  47.    
  48.    
  49.     //---------------------------------------------------
  50.     // main loop to process clients' connection-requests
  51.     //---------------------------------------------------
  52.     while ( 1 )
  53.     {
  54.         sockaddr_in peer;
  55.         socklen_t   plen = sizeof peer;
  56.         bzero( &peer, plen );
  57.        
  58.         printf( "server waiting \n" );
  59.        
  60.         int client = accept( sock, (sockaddr *)&peer, &plen );
  61.         if ( client < 0 ) { perror( "accept" ); break; }
  62.        
  63.         //---------------------------------------------
  64.         // we can now read from or write to the client
  65.         //---------------------------------------------
  66.         char    ch;
  67.         int index = 0;
  68.         char get[1024];
  69.         const char str[] = "/";
  70.        
  71.         if ( read( client, &ch, 1 ) < 0 )
  72.         {
  73.             perror( "read" );
  74.            
  75.             get[index] = ch;
  76.             index++;
  77.            
  78.             int compareResult = strncmp(str, &ch, 5);
  79.            
  80.             if(compareResult == 0){
  81.                 index = 0;
  82.                 close( client );
  83.                 printf( "server responded, connection closed" );
  84.                 break;
  85.             }
  86.         }
  87.        
  88.         //if ( write( client, &ch, 1 ) < 0 ) { perror( "write" ); break; }
  89.        
  90.         printf( "got stuff" );
  91.        
  92.     }
  93.    
  94.     close( sock );
  95.     printf( "\n" );
  96. }
Advertisement
Add Comment
Please, Sign In to add comment