Preciso de Ajuda

ninita

Power Member
Boas noites

Preciso de ajuda num código. Não sei o que está mal.
while(1)
{
if(nPlayers<4)
{
if((arraySockets[nPlayers]=newsocket=accept(socketGamePlayer,(struct sockaddr *)&cli_addr,(socklen_t *)&cliaddr_len) )==-1){
printf("Impossibilidade de aceitar jogadores\n");
exit(0);
}
}
//else
//{
switch(fork())
{
case -1:printf("Impossivel atender jogadores\n");
close(newsocket);
break;
case 0: if(nPlayers>4)
exit(EXIT_SUCCESS);
else{
close(socketGamePlayer);
atendeJogador(newsocket);
exit(EXIT_SUCCESS);
}
default:sleep(5);
if(nPlayers==4)
{
printf("Existe(m) %d jogador(es) a aguardar inicio do jogo\n", nPlayers);
iniPlayer=nPlayers-2;

//Envia um GAME_START REQUEST aos jogadores j�logados
for(i=0;i<nPlayers;i++)
{
strcpy(buffer, gameStartRequest(i+1, "INICIAR", nPlayers, nPlayers, iniPlayer));
aux=strlen(gameStartRequest(i+1, "INICIAR", nPlayers, nPlayers, iniPlayer));
if(write(arraySockets, buffer, aux+1) != aux+1){
printf("Erro ao enviar o socket para o jogador\n");
close(arraySockets);
exit(0);
}
//Espera pela confirma�o do jogador que est�pronto para come�r o jogo, ou seja, GAME_START REPLY
if((nbytes=readL(arraySockets, buffer, BUFFERSIZE)) < 0){
printf("Erro ao ler do socket\n");
close(arraySockets);
exit(0);
}
puts("Recebi do jogador\n\n");
puts(buffer);

xmlParseMessagePG((const xmlChar *)buffer);

if(strcmp(ArrayMensagem[2*TAMMSG], "PRONTO")==0)
playersOK++;
sleep(2);
}
puts("ja estao tds ok e ia jogar");
//jogo(arraySockets, playersOK, iniPlayer);
}
nPlayers++;
//close(newsocket);
break;
}
//}
//}
}

}

Este código deveria fazer o seguinte:A partir do ciclo for(), este codigo que e o servidor de uma aplicaçao cliente-servidor TCP, deveria comunicar c os varios clientes q estao ligados, m ao enviar a mensagem (XML) q deve aos jogadores, ele guarda essa mensagem em buffer e depois ao ler a resposta dos jogadores n a leu, m le o q enviou ao jogadores...PK???
Obrigado
 
Back
Topo