#include #include #include #include #include #include #include void printconnerror() { switch (errno) { case ETIMEDOUT : printf("Connection timed out.\n"); break; case ECONNREFUSED : printf("Connection refused.\n"); break; case EHOSTDOWN : printf("Host down.\n"); break; case EHOSTUNREACH : printf("No route to the host.\n"); break; case ENETUNREACH : printf("Network unreachable.\n"); break; default: printf("errno = %d\n", errno); } } int main(int argc, char * argv[]) { int sockfd, i; struct sockaddr_in addr; char buf[10000]; if (argc < 2) { printf("Usage: a.out ip_addr.\n"); exit(0); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror(": Can't get socket"); exit(1); } memset(&addr, 0, sizeof(struct sockaddr_in)); addr.sin_family = AF_INET; addr.sin_port = ((short)80); addr.sin_addr.s_addr = inet_addr(argv[1]); if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { printconnerror(); perror(": connect"); exit(1); } strcpy(buf,"GET /~liux/index.html http/1.1\nHost: www.cs.fsu.edu\n\n"); write(sockfd, buf, strlen(buf)); do { for (i=0; i<10000; i++) buf[i] = '\0'; i=read(sockfd, buf, 9999); printf("string read = %s\n", buf); } while(i>0); return 0; }