rendered paste body#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>#include <netdb.h>#define PROMPT "-> "unsigned longresolveInput(addr)const char* addr;{ unsigned long ip; struct hostent * rhost; ip = inet_addr(addr); if(ip != INADDR_NONE) return ip; rhost = gethostbyname(addr); if(!rhost) return (unsigned long)NULL; memcpy(&ip, rhost->h_addr, sizeof(unsigned long)); return ip;}intmain(argc,argv)int argc;char *argv[];{ int sockfd; struct sockaddr_in serv_addr; char buffer[64]; char buf[1024]; if( argc != 3 ) { printf("Usage : %s ip_addr port\n", argv[0]); exit(0); } printf("Opening socket ...\n"); bzero(&serv_addr, sizeof(serv_addr)); /* initialisation de la structure sockaddr_in */ serv_addr.sin_family = AF_INET; // IPv4 serv_addr.sin_addr.s_addr = resolveInput(argv[1]); serv_addr.sin_port = htons(atoi(argv[2])); /* ouverture socket */ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("Socket Error\n"); exit(0); } /* mise en place de la connexion */ printf("Trying to connect on %s ...\n", argv[1]); if( connect( sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) { printf("Connexion Error\n"); exit(0); } printf("Connected, getting info.\n"); while(read(sockfd, buf, sizeof(buf))>=0) { printf("%s\n", buf); printf(PROMPT); scanf("%s", &(*buffer)); printf("%s\n", buffer); if (write(sockfd,buffer,strlen(buffer)) != strlen(buffer)) { printf("write socket"); return(-1); } } close(sockfd); return 0;}