[C]Problema read/write di un int

di il
1 risposte

[C]Problema read/write di un int

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),

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte