/* * Example of client using TCP protocol. */ #ifdef __WIN32__ #include #else #include #include #include #endif #include #include #include "message.h" // #define SERV_HOST_ADDR "156.12.23.5" //#define SERV_HOST_ADDR "156.12.1.120" #define SERV_HOST_ADDR "156.12.127.18" /* pooh's Internet address, defined in /etc/hosts */ main(argc, argv) int argc; char *argv[]; { int sockfd, i; struct sockaddr_in serv_addr; int SERV_TCP_PORT; char *pname; MES mes_out, mes_in, tmp; printf("Please input the same integer input to the ser program\n"); printf(" (which is larger than 1023)\n"); scanf("%d", &SERV_TCP_PORT); pname = argv[0]; /* create a socket which is one end of a communication channel */ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("client: cannot open stream socket"); exit(1); } /* specify server address */ // bzero((char *) &serv_addr, sizeof(serv_addr)); memset((char *) &serv_addr,0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; /* address family: Internet */ serv_addr.sin_addr.s_addr = inet_addr(SERV_HOST_ADDR); serv_addr.sin_port = htons(SERV_TCP_PORT); /* connect the socket, sockfd, to the ser program. */ if(connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { perror("client: cannot connect to server"); exit(2); } mes_out.mtype = htonl(getpid()); for(i=0; i<10; i++) { mes_out.number = htonl(i); if(write(sockfd, &mes_out, sizeof(MES)) == -1) { perror("client: write"); exit(3); } if(read(sockfd, &tmp, sizeof(MES)) == -1) { perror("server: read"); exit(4); } mes_in.mtype = ntohl(tmp.mtype); mes_in.number = ntohl(tmp.number); fprintf(stderr, "client %d output: %d %d\n", getpid(), mes_in.mtype, mes_in.number); sleep(1); } close(sockfd); exit(0); }