/* * Example of client using TCP protocol. */ #include #include #include #include #include #include "message.h" #define SERV_HOST_ADDR "156.12.127.18" /* acad'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_DGRAM, 0)) < 0) { perror("client: cannot open stream socket"); exit(1); } /* specify server address */ bzero((char *) &serv_addr, 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); mes_out.mtype = htonl(getpid()); for(i=0; i<10; i++) { if (i==5){ mes_out.number = htonl(i+10000); sendto(sockfd,&mes_out,sizeof(MES),MSG_OOB, (struct sockaddr *)&serv_addr,sizeof(serv_addr)); fprintf(stderr,"Sent out of band data to server - value %d\n", i+10000); } mes_out.number = htonl(i); if(sendto(sockfd, &mes_out, sizeof(MES),0, (struct sockaddr *)&serv_addr,sizeof(serv_addr)) == -1) { perror("client: write"); exit(3); } fprintf(stderr,"Sent %d to server\n",i); /* 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); }