int main(int argc, char** argv) { if(checkArgc(argc, 5, "You must supply a VPN IP, VPN Port, Server IP, and Server Port!")) { return 1; } int vpnPort = parseAndCheckPort(argv[2]); #ifdef Debug printf("VPN Port: %d\r\n", vpnPort); #endif int msglen = strlen(argv[3]) + strlen(argv[4]) + 4; int x; char *buffer = mallocAndCheck(sizeof(char)*msglen); for(x = 0; x < msglen; x++) buffer[x] = 0; socklen_t addrlen = (socklen_t)sizeof(struct sockaddr_storage); int udpSocket = bindUDPSocket(); struct sockaddr_in vpnaddr; vpnaddr.sin_family = AF_INET; vpnaddr.sin_port = htons(vpnPort); // Parse the arg given to us for the IP if(inet_pton(AF_INET, argv[1], &(vpnaddr.sin_addr)) <= 0) { write(2, "Failed to parse IP Address!\r\n", 29); return -1; } #ifdef Debug printf("Server Address: %s\r\n", inet_ntoa(vpnaddr.sin_addr)); #endif strcpy(buffer, argv[3]); strcat(buffer, "\r\n"); strcat(buffer, argv[4]); strcat(buffer, "\r\n"); if(sendto(udpSocket, buffer, msglen, 0, (struct sockaddr *)&vpnaddr, addrlen) <= 0) { perror("Sendto"); return 1; } printf("Sent:\r\n%s\r\n", buffer); memset(buffer, 0, 1024); while(recvfrom(udpSocket, buffer, 1024, 0, (struct sockaddr *)&vpnaddr, &addrlen) <= 0) { } printf("VPN Port: %d\r\n", numberFromString(buffer)); }
int main(int argc, char **argv) { checkArgc(argc); studentsWaiting = inputValidation(argv[1]); officeLimit = inputValidation(argv[2]); pthread_mutex_init(&office_mutex, NULL); pthread_mutex_init(&student_mutex, NULL); pthread_mutex_init(&professor_mutex, NULL); pthread_mutex_init(&student_question_mutex, NULL); pthread_cond_init(&professor_complete_cv, NULL); pthread_cond_init(&student_question_cv, NULL); pthread_cond_init(&office_capacity_cv, NULL); executeThread(studentsWaiting); return 0; }