/* Simple socket client test program - Vijay Lakamraju, Anna Bekkerman */ #include #include #include #include #include #include #include #include "socket_rapids.h" #include "rapids_api.h" #include "utils.h" void error(char *msg) { perror(msg); exit(0); } //Generates a timeout between 0 and 3 seconds int genTimeout(void) { int highest_number, lowest_number; int rndNum; highest_number = 5; lowest_number = 0; rndNum = rand()%highest_number + lowest_number; //printf("%d %d %d\n", lowest_number, highest_number, rndNum); return rndNum; } int main(int argc, char *argv[]) { int sockfd, portno, n, timeout; long ctrl_seqno = 0; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; //printf("A\n"); rapids_init("client"); //printf("B\n"); srand(time(NULL)); if (argc < 3) { fprintf(stderr,"usage %s hostname port\n", argv[0]); exit(0); } portno = atoi(argv[2]); server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(portno); while(1) { sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); if (connect(sockfd, &serv_addr, sizeof(serv_addr)) < 0) error("ERROR connecting"); printf("Sending message: hi there!\n"); bzero(buffer, 256); //fgets(buffer,255,stdin); strcpy(buffer, "hi there!"); rapids_socket_write_mesg(sockfd, 0, "msg"); n = write(sockfd, buffer, strlen(buffer)); if (n < 0) error("ERROR writing to socket"); bzero(buffer,256); n = read(sockfd,buffer,255); if (n < 0) error("ERROR reading from socket"); rapids_socket_read_mesg(sockfd, 1, "msg"); printf("Server: %s\n",buffer); close(sockfd) ; //timeout = genTimeout(); timeout = 10; printf("Going to sleep for %ds\n", timeout); sleep(timeout); } return 0; }