//#define _POSIX_SOURCE #include #include #include #include #include #include #include #include #include int main(int argc, char * argv[]) { int sockfd, rv; // struct sockaddr_in addr; char buf[100]; struct addrinfo hints, *res, *ressave; if (argc < 3) { printf("Usage: a.out hostname_or_ip_addr port.\n"); exit(0); } memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; if ((rv = getaddrinfo(argv[1], argv[2], &hints, &res)) != 0) { fprintf(stderr, "%s\n", gai_strerror(rv)); exit(1); } ressave = res; do { if ((sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) < 0) { continue; } if (!connect(sockfd, res->ai_addr, res->ai_addrlen)) { break; } close(sockfd); } while ((res = res->ai_next) != NULL); freeaddrinfo(ressave); /* 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 = htons((short)atoi(argv[2])); addr.sin_addr.s_addr = inet_addr(argv[1]); if (connect(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { perror(": connect"); exit(1); } */ // A connection has been established printf("out of connect.\n"); fflush(0); // send an integer value // convert it to network-byte order before sending { int ii; ii = 100; printf("ii= %d %x\n", ii, ii); //write(sockfd, &ii , sizeof(int)); int i2 = htonl(ii); write(sockfd, &i2 , sizeof(int)); } while (fgets(buf, 100, stdin)) { write(sockfd, buf, strlen(buf)+1); if (read(sockfd, buf, 100)==0) { printf("server closed the connection.\n"); exit(0); }; printf("Server response : %s\n", buf); } }