PDA

Visualizza la versione completa : [c] spiegazioni su codice


dogo21sob
24-09-2008, 01:54
while ( lista ) {
if ( !lista->gioco ) {
break;
}
lista = lista->Next;
}
if ( !lista ) {
printf("\n%s in attesa di un nuovo giocatore...\n", Nodo->Nick );
Nodo->gioco = NULL ;
while ( !Nodo->gioco ) {
Start = 'n';
writen(Conn_fd,&Start,1);
}
Start = 's';
writen(Conn_fd,&Start,1);
}
else {
Start = 's';
writen(Conn_fd,&Start,1);
Nodo->gioco = malloc (1);
}

allora da quello che ho capito (pi che altro provandolo) questo pezzo di codice (relativo a un server concorrente a cui si collegano pi client contemporaneamente) quando vede che si collega il primo client lo mette in attesa, quando arriva il secondo client sblocca il primo e permette di lanciare una partita tra i 2 e lo stesso vale per le successive coppie di client.. partendo dal fatto che writen una funzione che usa write scritta solo per non creare problemi col buffer, qualcuno saprebbe commentare linea per linea il codice in modo da capire bene cosa succede ad ogni passaggio? :bh:

menphisx
24-09-2008, 15:02
/*Cicla fino a quando non trova l'ultimo nodo della lista, che disolito NULL*/
while ( lista ) {
/*Se gioco NULL esce*/
if ( !lista->gioco ) {
break;
}
/*Va avanti di un nodo*/
lista = lista->Next;
}
/*Se lista effettivamente NULL*/
if ( !lista ) {
printf("\n%s in attesa di un nuovo giocatore...\n", Nodo->Nick );
/*Questo codice non ha senso perch cicla all'infinito, a meno che non ci sia altro codice nella writen*/
Nodo->gioco = NULL ;
while ( !Nodo->gioco ) {
Start = 'n';
writen(Conn_fd,&Start,1);
}
Start = 's';
writen(Conn_fd,&Start,1);
}
/*Se lista non NULL alloca un nuovo gioco e invia i necessari dati al client*/
else {
Start = 's';
writen(Conn_fd,&Start,1);
Nodo->gioco = malloc (1);
}


:ciauz:

Loading