Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/socket.h> // for socket(), bind(), listen(), accept()
- #include <netinet/in.h> // for PF_INET, SOCK_STREAM, IPPROTO_TCP
- #include <stdio.h> // for printf(), perror()
- #include <unistd.h> // for read(), write(), close()
- #include <string.h> // for bzero()
- #define DEMO_PORT 9738
- int main( void )
- {
- //-----------------------------------------
- // create an unnamed socket for the server
- //-----------------------------------------
- int sock = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );
- if ( sock < 0 )
- {
- perror( "opening stream socket" );
- return -1;
- }
- printf( "\nsock=%d \n", sock );
- //----------------------------------------
- // construct a name for the server socket
- //----------------------------------------
- struct sockaddr_in self;
- socklen_t nlen = sizeof self;
- bzero( &self, sizeof self );
- self.sin_family = AF_INET;
- self.sin_port = htons( DEMO_PORT );
- self.sin_addr.s_addr = htonl( INADDR_ANY );
- if ( bind( sock, (sockaddr *)&self, nlen ) < 0 )
- {
- perror( "bind failed" );
- return -1;
- }
- printf( "bind succeeded port: %d\n",DEMO_PORT);
- //---------------------------------------------------------
- // now create a connection queue and wait for some clients
- //---------------------------------------------------------
- if ( listen( sock, 5 ) < 0 )
- {
- perror( "listen failed" );
- return -1;
- }
- printf( "listen succeeded \n" );
- //---------------------------------------------------
- // main loop to process clients' connection-requests
- //---------------------------------------------------
- while ( 1 )
- {
- sockaddr_in peer;
- socklen_t plen = sizeof peer;
- bzero( &peer, plen );
- printf( "server waiting \n" );
- int client = accept( sock, (sockaddr *)&peer, &plen );
- if ( client < 0 ) { perror( "accept" ); break; }
- //---------------------------------------------
- // we can now read from or write to the client
- //---------------------------------------------
- char ch;
- int index = 0;
- char get[1024];
- const char str[] = "/";
- if ( read( client, &ch, 1 ) < 0 )
- {
- perror( "read" );
- get[index] = ch;
- index++;
- int compareResult = strncmp(str, &ch, 5);
- if(compareResult == 0){
- index = 0;
- close( client );
- printf( "server responded, connection closed" );
- break;
- }
- }
- //if ( write( client, &ch, 1 ) < 0 ) { perror( "write" ); break; }
- printf( "got stuff" );
- }
- close( sock );
- printf( "\n" );
- }
Advertisement
Add Comment
Please, Sign In to add comment