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:
codice:
typedef struct {
char nickname[MAX_SIZE];
char password[MAX_SIZE];
int permesso; //assegnato random durante la registrazione
}Utente;
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..
generazione numero random tra 1 e 3 compresi:
codice:
int permessoRandom() {
int esito;
srand(time(NULL));
esito = rand()%3;
esito++;
return esito;
}
write del permesso dal client (sono sicuro di aver sbagliato o questa o la read nel server)...
codice:
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");
}
read del permesso dal server
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");
}
scrittura dell'utente su file..
codice:
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;
}
Help meeee