Salve ragazzi
Ho un problema. Quando invio uno specifico int dal server al client, nel client ricevo un numero sbagliato.
Specifico meglio:
Il client si deve loggare inviando nickname e password. Se il login è giusto (l'utente esiste) il client riceve il permesso (intero che può essere 1,2, o 3).
Struct utente (in un file.h separato)
typedef struct Utente{
char nickname[NICKNAME];
char password[PASSWORD];
int permesso; //assegnato random durante la registrazione
}Utente;
Invio dal server..
//Cerco l'utente
Utente* utenteTemp = cercaUtente(utente);
//Utente trovato
if(utenteTemp != NULL) {
//Invio il permesso al client
int permesso = utenteTemp->permesso;
printf("Permesso: %d", permesso); //QUI STAMPA IL PERMESSO CORRETTO
while(write(sock,&permesso,sizeof(int)) <= 0) {
if(errno != EINTR){
if(errno == ECONNRESET || errno == EPIPE) {
printf("\nErrore write [permesso]: CONNESSIONE INTERROTTA\n");
return 0;
}
else{
printf("Errore write\n");
return 0;
}
}
printf("Errore write [permesso]\n");
}
free(utenteTemp);
return permesso;
}
Ricezione dal client:
int permesso;
while(read(sock,&permesso,sizeof(int)) <= 0) {
if(errno != EINTR){
if(errno == ECONNRESET || errno == EPIPE) {
printf("\nErrore read [menu]: CONNESSIONE INTERROTTA\n");
return 0;
}
else{
printf("Errore read\n");
return 0;
}
}
printf("Errore read [menu]\n");
}
return permesso;
Nota: Se provo a loggarmi sempre con lo stesso utente con permesso 2, ricevo nel client sempre lo stesso numero (33573711),