int main( int argc, char ** argv ) { int sd; struct sockaddr_in addr; char string[512]; char buffer[512]; char prompt[] = "Enter a string>>"; char output[512]; int len; char * func = "main"; if ( argc < 2 ) { printf( "\x1b[2;31mMust specify server name on command line\x1b[0m\n" ); return 1; } set_iaddr_str( &addr, argv[1], CLIENT_PORT ); printf( "Trying to connect to server. %s ...\n", argv[1] ); do { errno = 0; if ( (sd = socket( AF_INET, SOCK_STREAM, 0 )) == -1 ) { printf( "socket() failed in %s()\n", func ); return -1; } else if ( connect( sd, (const struct sockaddr *)&addr, sizeof(addr)) == -1 ) { close( sd ); } } while ( errno == ECONNREFUSED ); if ( errno != 0 ) { printf( "Could not connect to server %s errno %d\n", argv[1], errno ); } else { printf( "Connected to server %s\n", argv[1] ); while ( write( 1, prompt, sizeof(prompt) ), (len = read( 0, string, sizeof(string) )) > 0 ) { string[len]= '\0'; write( sd, string, strlen( string ) + 1 ); read( sd, buffer, sizeof(buffer) ); sprintf( output, "Result is >%s<\n", buffer ); write( 1, output, strlen(output) ); } } return 0; }
int main(int argc, char** argv){ if(argc != 2){ printf("Error: Server host must be specified as a command line argument."); return 0; } int x = 0; char* serverName = argv[1]; listenFileDescrip = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serverAddress; set_iaddr_str(&serverAddress, serverName, __SERVER_PORT__); while( (x = connect(listenFileDescrip, (const struct sockaddr*) &serverAddress, sizeof(serverAddress)) ) ) { printf("Attempting to connect to %s...\n", serverName); perror(""); sleep(3); } //Connected to server. printf("Connected to Server.\n"); pthread_create(&thread, NULL, handler, serverName); pthread_detach(thread); //Take user input here. pthread_create(&inputHandler, NULL, sendInput, NULL); pthread_detach(thread); while(write(listenFileDescrip, "0", 2) == 2){ sleep(1); } //Clean up stuff pthread_kill(thread, SIGINT); pthread_kill(inputHandler, SIGINT); close(listenFileDescrip); printf("Disconnected From Server.\n"); return 0; }