#include #include #include #include #include #define SERVER_PORT 1966 #define MAX_LINE 256 int main( int argc, char * argv[] ) { struct hostent *hp; struct sockaddr_in sin; char* host; char buf[MAX_LINE]; int s; int len; if ( argc == 2) { host = argv[1]; //hands host name to client } else { fprintf(stderr, "usage:simplex-talk host\n"); exit(1); } /*translate host name into peer's address */ hp = gethostbyname( host ); //returns a pointer to struct hostent if( !hp ) { fprintf( stderr, "simplex-talk: unknown host: %s\n", host ); exit (1); } /*builds address data structure */ bzero( (char*)& sin, sizeof(sin) ); sin.sin_family = AF_INET; bcopy( hp->h_addr, (char*)&sin.sin_addr, hp->h_length ); sin.sin_port = htons( SERVER_PORT ); /* client performs an active open */ if( (s = socket(PF_INET, SOCK_STREAM, 0)) < 0 ) { perror( "simplex-talk: socket" ); exit(1); } /*and then connects*/ if( connect(s, (struct sockaddr*)& sin, sizeof(sin)) < 0 ) { perror( "simplex-talk: connect" ); close(s); exit(1); } /* main loop: get and send lines of text */ fputs( "Enter text to send:\n ", stdout ); while( fgets(buf, sizeof(buf), stdin) ) // fgets() retrieves the users input into buf { buf[MAX_LINE-1] = '\0'; len = strlen(buf) + 1; send( s, buf, len, 0 ); } } //end main.