#include #include #include #include #include #include #include #include #include #include #define BUFSZ 1024 int main(int argc, char *argv[]) { int s; struct sockaddr_in sa; struct in_addr ia; struct hostent *h; char *buffer = malloc(BUFSZ); if (argc < 3) { printf("usage: %s hostname port\n", argv[0]); return 1; } s = socket(PF_INET, SOCK_STREAM, 0); memset(buffer, 0, BUFSZ); h = gethostbyname(argv[1]); memcpy(&ia, h->h_addr_list[0], sizeof(struct in_addr)); sa.sin_family = AF_INET; sa.sin_port = htons(atoi(argv[2])); sa.sin_addr.s_addr = ia.s_addr; if (!connect(s, (const struct sockaddr *)&sa, sizeof(struct sockaddr_in))) write(1, buffer, read(s, buffer, BUFSZ)); else perror("connect"); shutdown(s, SHUT_RDWR); return 0; }