#include #include #include #include #include #include #include #define MAX 1024 // max number of bytes we can get at once int main(int argc, char **argv) { unsigned short int port = 0; int sockfd = -1; char buffer[MAX + 1]; char myname[MAX + 1]; struct hostent *serverHE = NULL; struct sockaddr_in server_addr; // connector's address information if (argc != 3) { fprintf(stderr, "usage: %s host port\n", argv[0]); return -1; } gethostname(myname, MAX); port = atoi(argv[2]); serverHE = gethostbyname(argv[1]); printf("Connection:\n From\t%s\n To\t%s port %d\n", myname, serverHE->h_name, port); memset(&(server_addr), 0, sizeof(struct sockaddr_in)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr = *((struct in_addr *)serverHE->h_addr_list[0]); printf(" Server IP address %s\n", inet_ntoa(ntohl(server_addr.sin_addr))); sockfd = socket(AF_INET, SOCK_STREAM, 0); connect(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)); recv(sockfd, buffer, MAX, 0); printf("\n%s said: %s\n", argv[1], buffer); close(sockfd); }