1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Preciso de Ajuda

Discussão em 'Programação' iniciada por ninita, 26 de Setembro de 2007. (Respostas: 0; Visualizações: 409)

  1. ninita

    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
     

Partilhar esta Página