// reads a passenger data file // // input: airline pointer // file name // output: number of lines read // int processData( airline *a, container* cp ) { int x = 0; int index = 0; if ( cp != NULL) { for (x=0; x<cp->rows; x++) { initPassenger( &(a->persons[index]), cp->strings[x] ); index++; } a->npassengers = index; } return index; }
int main(int argc , char *argv[]) { int socket_desc , new_socket, c,*new_sock; struct sockaddr_in server , client; //Airport Sofia; Flight toBarcelona, toParis; Passanger pesho,gosho,ivan,dragan,atanas, dragoi, blagoi, ico, moni, pepkata; //Create socket socket_desc = socket(AF_INET , SOCK_STREAM , 0); if (socket_desc == ERROR_STATE) { printf("Could not create socket \n"); } else { puts("Socket created successfully \n "); } //Initialize server to 0 (void) memset((char*) &server, 0, sizeof(server)); //Prepare the sockaddr_in structure server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = htons( PORT_NUMBER ); //Bind if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0) { //Print the error message perror("Binding failed. Error"); return ERROR_STATE; } puts("Binding successful"); //Init airport initAirport(&Sofia,NUM_PASSAGERS,1,"Letishte Sofia"); //Init flights initFlight(&toBarcelona,NUM_PASSAGERS,1,LANDED,"Barcelona"); initFlight(&toParis,NUM_PASSAGERS,2,STILL_FLYING,"Paris"); //Init passengers initPassenger(&pesho,1,"Petar","Petrov","Hadjigenchov"); initPassenger(&gosho,2,"Georgi","Valentinov","Chelenkov"); initPassenger(&ivan,3,"Ivan","Krasimirov","Botev"); initPassenger(&dragan,4,"Dragan","Iordanov","Gospodinov"); initPassenger(&atanas,5,"Atanas","Slaveikov","Troshanov"); initPassenger(&dragoi,6,"Dragoi","Petrov","Dragoichev"); initPassenger(&blagoi,7,"Blago","Blajev","Djiev"); initPassenger(&ico,8,"Hristo","Ivanov","Stoichkov"); initPassenger(&moni,9,"Moncho","Monev","Minev"); initPassenger(&pepkata,10,"Pepi","Monev","Pepinchev"); //Asigning passngers to flights assignPassengerToFlight(&toBarcelona, pesho); assignPassengerToFlight(&toBarcelona, gosho); assignPassengerToFlight(&toBarcelona, ivan); assignPassengerToFlight(&toBarcelona, dragan); assignPassengerToFlight(&toBarcelona, atanas); assignPassengerToFlight(&toParis, dragoi); assignPassengerToFlight(&toParis, blagoi); assignPassengerToFlight(&toParis, ico); assignPassengerToFlight(&toParis, moni); assignPassengerToFlight(&toParis, pepkata); assignFlightToAirport(&Sofia,toBarcelona); assignFlightToAirport(&Sofia,toParis); //Displaying flight passengers NFO printf("\n-----------FLIGHT PASSENGERS INFO--------------"); int i,j; for(i = 0; i < Sofia.used; i++) { printf("\nDestination: %s\n",Sofia.flights_array[i].destination); for(j = 0; j < Sofia.flights_array[i].used; j++) { printf("\n"); printf("%d ",Sofia.flights_array[i].passangers_array[j].ID); printf("%s ",Sofia.flights_array[i].passangers_array[j].first_name); printf("%s ",Sofia.flights_array[i].passangers_array[j].second_name); printf("%s ",Sofia.flights_array[i].passangers_array[j].last_name); } } //Listen listen(socket_desc , 3); //Accept and incoming connection puts("\nWaiting for incoming connections..."); c = sizeof(struct sockaddr_in); while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) ) { puts("Connection accepted"); pthread_t sniffer_thread; new_sock = malloc(1); *new_sock = new_socket; int thread_desc = 0; thread_desc = pthread_create( &sniffer_thread , NULL , connection_handler , (void*) new_sock); if(thread_desc < 0) { perror("Could not create thread"); return ERROR_STATE; } puts("Handler assigned"); int detach = pthread_detach(thread_desc); if(detach == 0 ) { puts("Freeing the thread resources failed!"); } } if (new_socket < 0) { perror("Accept failed"); return ERROR_STATE; } ///////////////Freeing memory freeFlight(&toBarcelona); freeFlight(&toParis); free(pesho.first_name); free(pesho.second_name); free(pesho.last_name); free(gosho.first_name); free(gosho.second_name); free(gosho.last_name); free(ivan.first_name); free(ivan.second_name); free(ivan.last_name); free(dragan.first_name); free(dragan.second_name); free(dragan.last_name); free(atanas.first_name); free(atanas.second_name); free(atanas.last_name); /////////////// return 0; }