Salve gente
In un programma client-server che sto sviluppando, dal client si inseriscono i dati nome e password, e in automatico
viene generato un int di permesso random. I dati vengono inviati al server tramite 3 write sequenziali con supporto
di una struct così definita:
Il server farà 3 read sequenziali ovviamente per leggere i dati e registrare l'utente. La registrazione avviene su un file, e il problema che incontro è sul numero che indica il permesso! Su file invece di comparire 1, 2,o 3, compare 6CB, sempre. Allego parte del codice..codice:typedef struct { char nickname[MAX_SIZE]; char password[MAX_SIZE]; int permesso; //assegnato random durante la registrazione }Utente;
generazione numero random tra 1 e 3 compresi:
write del permesso dal client (sono sicuro di aver sbagliato o questa o la read nel server)...codice:int permessoRandom() { int esito; srand(time(NULL)); esito = rand()%3; esito++; return esito; }
read del permesso dal servercodice:while(write(sock,&utente.permesso,sizeof(permesso)) <= 0) { if(errno != EINTR) { if(errno == ECONNRESET || errno == EPIPE) { printf("\nErrore nella write di [permesso]: CONNESSIONE FALLITA\n"); return -1; } else { printf("La write di [permesso] è fallita\n"); return -1; } } printf("Errore system call write [permesso]\n"); }
scrittura dell'utente su file..codice:while(read(sock,&utente.permesso,sizeof(int)) <= 0) { if(errno != EINTR) { if(errno == ECONNRESET || errno == EPIPE) { printf("\nErrore nella read di [permesso]: CONNESSIONE FALLITA\n"); return -1; } else { printf("La read di [permesso] è fallita\n"); return -1; } } printf("Errore system call read [permesso]\n"); }
Help meeeecodice:int registraUtente(Utente utente) { int ds = open("login",O_WRONLY|O_APPEND); if(ds == -1) { return -1; } int w = write(ds,&utente,sizeof(utente)); if(w == -1) { return -1; } close(ds); return 1; }![]()


Rispondi quotando