Ciao a tutti
Ho questo problema a cui non trovo soluzione!
Io ho una coda di 2 elementi (socket) che una volta piena mi prende i due socket, azzera la coda e avvia una procedura per farli comunicare.
Il problema è che non so bene come gestirla perchè l'idea che mi è venuta ha problemi quando una volta che è terminata la procedura creata con la fork mi ritorna e mi crea inconsistenza nella coda.
Ecco il codice:
codice:
void waitPlayer(){
int nClient = 0;
int q[2];
fprintf(stderr, "Inizio ascolto.\n");
while(true){
if(nClient == 2){
nClient = 0;
sPlayer1 = q[0];
sPlayer2 = q[1];
//Fork avvio gioco
int pid_partita;
switch (pid_partita = fork()) {
case -1:
perror("Errore nell'esecuzione della fork.");
exit(1);
case 0:
controlPlayers(sPlayer1,sPlayer2);
break;
}
}
/* gestione delle connessioni dei clienti */
int player_len = sizeof(player);
if ((q[nClient] = accept(sock, (struct sockaddr *)&player, &player_len)) < 0) {
perror("accepting connection");
exit(3);
}
nClient++;
fprintf(stderr, "Nuovo Player Connesso C:%d.\n",nClient);
}
}
Grazie mille dell'attenzione