........
.....
........
.......
// Creazione del socket e
// riempimento della struttura server
//------------------------------------
if (( sd = socket(AF_INET,SOCK_STREAM,0)) < 0)
printf("Errore nella creazione del sever!\n");
server.sin_family = AF_INET;
server.sin_port = htons(port);
server.sin_addr.s_addr = INADDR_ANY;
//Assegnazione al socket di un processo tramite funzione BIND
//-----------------------------------------------------------
if (bind(sd,(struct sockaddr *)&server,sizeof(server)) <0 )
printf("Errore nella chiamata di sitema BIND!\n");
//Messa in ascolto del server
//---------------------------
listen(sd,MAX_CONNECTION);
//Ciclo infinito di ascolto
//-------------------------
while(1) {
[INDENT] if ((temp_sd=accept(sd,(struct sockaddr *)&client,&address_size)) < 0)
{
printf ("Errore durante la chiamata ACCEPT\n");
exit(-1);
}
if ((pid = fork()) < 0)
{
perror("fork error\n");
exit(-1);
}
if (pid == 0) { //ci troviamo nel figlio
close(sd);
//Pulizia dello schermo terminale
//-------------------------------
pulisci_schermo (temp_sd);
//Visualizzazione del titolo e menu
//---------------------------------
stampa_messaggio (temp_sd);
//Attesa ricezione scelta
//-----------------------
ricevi_dati(temp_sd,dati_ricevuti);
printf ("Dati ricevuti : %s\n",dati_ricevuti);
close(temp_sd);
exit(0);
}
else { //Mi trovo nel padre
close(temp_sd);
}
}
exit(0);
}
...........
........
............
......