int main(int argc, char *argv[]) { printf("Datagram hash client example\n\n"); //Check if arguments of sufficient size if (argc != 4) { fprintf(stderr,"Usage: udpClient serverName serverPort ownPort\n"); exit(EXIT_FAILURE); } //build sockets buildSocket(argv); //Init favicon initializeFavicon(argv); //TODO: MAIN LOOP onion_listen(o); onion_free(o); //Close socket close(sockfd); return EXIT_SUCCESS; }
int main(int argc, char *argv[]) { /* handle arguments */ if(argc != 4) { printf("Incorrect arguments, please use:\n./client server port username\n"); return 1; } raw_mode(); memset(liveChannel, '\0', CHANNEL_MAX); char * address = argv[1]; char * port = argv[2]; char * username = argv[3]; /* Build Socket we pass the function the address and port */ if(buildSocket(address, port) != true) { cooked_mode(); return 1; } /* Handle Login */ if(login(username) != true) { cooked_mode(); return 1; } int parseStatus = true; char * input; fd_set readfds; promptUser(); do { FD_ZERO(&readfds); FD_SET(0, &readfds); FD_SET(socketfd, &readfds); select(socketfd+1, &readfds, NULL, NULL, NULL); if(FD_ISSET(0, &readfds)) { input = inputString(); if(input != NULL) { /* Parse Input */ parseStatus = parseInput(input); if(parseStatus != -1) { promptUser(); } } } else if (FD_ISSET(socketfd, &readfds)) { struct text * text = (struct text *) malloc(sizeof(struct text) + 1024); int bytes = 0; if((bytes = recvfrom(socketfd, text, 1024, 0,servinfo->ai_addr, &servinfo->ai_addrlen)) > 0) { clearPrompt(); switchResp(text); free(text); } } } while(parseStatus != -1); freeaddrinfo(servinfo); cooked_mode(); return 0; }