Boa noite,
Bem pessoal vou tentar ser direto no assunto, eu tinha tudo funcional até hoje ter feito algumas modificações hoje, depois disso o meu código não entrou mais dentro do ciclo while:
vou por aqui um exerto do código, se alguém me conseguir ajudar agradeço:
void SendMsg(int sock)
{
//zona de variáveis
int tM = 4096;
int n;
int logged = 0;
char buffer[tM];
char nickname[tM];
bzero(buffer, tM);
//enviar catacter de comando para o utilizador
write(sock, "Efectue login por favor\r\n", 24);
//establecer um nickname
read(sock, buffer, tM);
printf("%s", buffer);
int sc = strncmp(buffer, "utilizador",10);
//verificar se quer criar utilizador
int criaU = strncmp(buffer, "criautilizador", 14);
if(criaU == 0)
{
//o utilizador é criado
//código aqui
printf("Utilizador criado com sucesso");
logged = 1;
}
if((sc < 0 || sc > 0) && logged != 1)
{
write(sock, "Erro ao efetuar login", 21);
}
else
{
logged = 1;
}
if(logged == 1)
{
char *temp = devString(buffer);
if(temp[0] == ' ')
temp++;
memset(nickname, 0, LEN);
strcpy(nickname, temp);
//poder receber mensagens do utilizador até que o mesmo queira que pare
write(sock, "% ", 2);
while(1)
{
printf("entrou no while");
char *resultado;
char fecho[8] = "termina";
int i = 0;
strcpy(resultado, buffer);
//Primeiro comando recebido
n = read(sock, buffer, tM);
int result = strncmp(resultado, fecho, 7);
printf("%d", n);
if(n < 0)
{
printf("Erro a enviar a mensagem\r\n");
}
if(result == 0)
{
n = write(sock, "Boa viagem\r\n", 10);
break;
}
n = write(sock, "% ",2);
//aqui executamos as restantes apps
int casos[6];
casos[0] = strncmp(buffer, "entregamsg", 10);
casos[1] = strncmp(buffer, "consultamsg", 11);
casos[2] = strncmp(buffer, "retiramsg", 9);
casos[3] = strncmp(buffer, "removeutilizador", 16);
casos[4] = strncmp(buffer, "listautilizador", 15);
casos[5] = strncmp(buffer, "utilizador", 10);
//case switch aqui
int helper = -1;
for(; i < sizeof(casos);i++)
{
if(casos[i] == 0)
helper = casos[i];
}
if (helper != -1)
{
switch(helper)
{
case 0:
//codigo de enviar msg
break;
case 1:
//consultar msg
break;
case 2:
//retira msg
break;
case 3:
n = write(sock,"Impossível remover utilizador depois de logado", 47);
break;
case 4:
//lista utilizadores
break;
case 5:
n = write(sock, "Impossível executar este comando depois de logado", 52);
break;
default:
n = write(sock, "Comando inválido", 60);
break;
}
}
printf("%s",buffer);
memset(buffer, 0, LEN);
}
}
}
↧