#include /* See NOTES */ #include #include #include #include #include #include #include //Creating a simple client: Two steps // // 1. Create a socket with socket() // // 2. Connect to a remote peer with connect() int main( int argc, char* argv[] ){ if ( argc != 3 ){ printf("Usage: ./server (ip address) (port number)\n"); return 0; } char* ipAddr = argv[1]; int portNum = atoi( argv[2] ); //Step 1: Create a socket int sockFD = socket( AF_INET, SOCK_STREAM, 0 ); if( sockFD == -1 ){ perror("Could not create socket"); return -1; } //Step 2: Connect to a remote peer struct sockaddr_in address; //Initializes address structure to zero memset( &address, 0, sizeof( struct sockaddr_in ) ); address.sin_family = AF_INET; address.sin_port = htons( portNum ); //address.sin_addr.s_addr = htonl(INADDR_ANY); int retVal = inet_aton( ipAddr, &(address.sin_addr) ); if( retVal == 0 ){ printf("Error: IP address not valid\n"); return -1; } retVal = connect( sockFD, (struct sockaddr*) &address, sizeof(struct sockaddr_in)); if( retVal == -1 ){ perror("Could not connect to server"); return -1; } //Now we're at the point where we can read/write to sockFD write( sockFD, "Hello from the client.", 22 ); FILE* sockStream = fdopen( sockFD, "r+" ); char* username = "David"; int X = 42; fprintf( sockStream, "My name is %s and my favorite number is %d\n", username, X ); return 0; }