int main(int argc, char *argv[]) { int sd, rc, flags, timeOut, portNum; struct sockaddr_in cliAddr, remoteServAddr; struct hostent *h; /* check command line args */ if(argc<4) { printf("usage : %s <server> <port_number> <filename> \n", argv[0]); exit(1); } portNum = atoi(argv[2]); /* get server IP address (no check if input is IP address or DNS name */ h = gethostbyname(argv[1]); if(h==NULL) { printf("%s: unknown host '%s' \n", argv[0], argv[1]); exit(1); } printf("%s: sending data to '%s' (IP : %s) \n", argv[0], h->h_name, inet_ntoa(*(struct in_addr *)h->h_addr_list[0])); remoteServAddr.sin_family = h->h_addrtype; memcpy((char *) &remoteServAddr.sin_addr.s_addr, h->h_addr_list[0], h->h_length); remoteServAddr.sin_port = htons(portNum); /* socket creation */ sd = socket(AF_INET,SOCK_DGRAM,0); if(sd<0) { printf("%s: cannot open socket \n",argv[0]); exit(1); } /* bind any port */ cliAddr.sin_family = AF_INET; cliAddr.sin_addr.s_addr = htonl(INADDR_ANY); cliAddr.sin_port = htons(0); rc = bind(sd, (struct sockaddr *) &cliAddr, sizeof(cliAddr)); if(rc<0) { printf("%s: cannot bind port\n", argv[0]); exit(1); } /* BEGIN jcs 3/30/05 */ flags = 0; timeOut = 100; // ms /* END jcs 3/30/05 */ /* send filename */ rc = sendto(sd, argv[3], strlen(argv[3])+1, flags, (struct sockaddr *) &remoteServAddr, sizeof(remoteServAddr)); if(rc<0) { printf("%s: cannot send filename %s\n",argv[0], argv[3]); close(sd); exit(1);} /* BEGIN jcs 3/30/05 */ receiveDataFromServer(sd, flags, timeOut, argv[3]); /* END jcs 3/30/05 */ return 1; }
int main(int argc, char const *argv[]) { /*printf("Client Started\n");*/ char port[20]; char address[50]; assert(argc >= 1 && argc <= 3); if (argc < 2) { strcpy(address,"localhost"); }else{ strcpy(address,argv[1]); } if (argc < 3) { strcpy(port,"6325"); } else { strcpy(port,argv[2]); } /*printf("trying to get socket\n");*/ // Get socket int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == -1) { printf( "Error opening the socket: %s\n", strerror( errno ) ); return errno; } /*printf("Succesfully got a socket number: %d\n", sock);*/ // Connect to server sock = connectToServer(sock, address, port); char buf[msgSize]; struct move m; // Get initial data struct gameData game = receiveDataFromServer(sock); if (game.isMisere == 1) { printf("This is a Misere game\n"); }else{ printf("This is a Regular game\n"); } printGameState(game); while(game.win == -1){ m = getMoveFromInput(sock); sprintf(buf, "%d$%d", m.heap,m.amount); if(sendAll(sock, buf, &msgSize) == -1){ close(sock); exit(0); } game = receiveDataFromServer(sock); // Check if move was valid printValid(game); // keep on playing printGameState(game); } printWinner(game); return 0; }