コード例 #1
0
ファイル: Lab0.cpp プロジェクト: rigodom/Practice
// 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;
}
コード例 #2
0
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;
}