#include #include #include #include #include #include #include #define PORT 11011 int main (int argc, char** argv) { char* cmdname = *argv++; --argc; if (argc != 1) { fprintf(stderr, "Usage: %s host\n", cmdname); exit(1); } char* hostname = *argv; struct hostent* hp; if ((hp = gethostbyname(hostname)) == 0) { fprintf(stderr, "unknown host: %s\n", hostname); exit(1); } char* hostaddr = hp->h_addr_list[0]; struct sockaddr_in addr = {0}; addr.sin_family = AF_INET; memmove((void *) &addr.sin_addr, (void *) hostaddr, hp->h_length); addr.sin_port = htons(PORT); int fd; if ((fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } if (connect(fd, (struct sockaddr *) &addr, sizeof addr) < 0) { perror("connect"); exit(1); } char buffer[BUFSIZ]; ssize_t nbytes; while((nbytes = read(fd, buffer, sizeof buffer)) > 0 && write(1, buffer, nbytes) == nbytes); }