Ciao! sto facendo un programma client/server per lo scambio di file, come prima cosa volevo far inserire al client il nome utente con il quale identificarsi (attraverso lo stdin), purtroppo dal client non riesco a immettere nessun nome e la read sul server mi mostra che dal socket ritorna parti del testo di indicazione che faccio leggere al client.
posto il codice
codice:
----SERVER----
void identificazione(int sock){
int i=-1;
char nome[1024];
FILE *fd;
char *testo = (char *) malloc( strlen("Inserire Username: ")+1);
if(testo==NULL){
printf("ERRORE SERVER: testo descrittivo.\n");
exit(0);
}
sprintf(testo, "%s", "Inserire Username: ");
/*while*/
/*invio le indicazioni alla socket*/
write(sock, testo, strlen(testo)+1);
read(sock, &nome, sizeof(nome));
printf("nome: %s\n", nome);
fd = fopen("Database/lista_utenti.txt", "r");
if(fd==NULL){
printf("ERRORE: il file non e' stato aperto.\n");
exit(0);
}
if (cerca_utente(fd, nome)<0) printf("nome non trovato\n");
/*possibile aggiunta risposta di successo*/
fclose(fd);
}
codice:
----CLIENT-----
void gestione_client(int sock, int r){
char *nome=(char *)malloc(1024);
char *buffer=(char *)malloc(1024);
int ris=1;
if(nome==NULL || buffer==NULL){
printf("errore client: malloc nome o buffer");
exit(0);
}
memset(nome, 0, sizeof(nome));
memset(buffer, 0, sizeof(buffer));
/*utente registrato*/
if(r==1){
read(sock, buffer, sizeof(buffer));
printf("%s\n", buffer);
while(ris == 1){
//printf("siamo nel while del client con la fgets\n");
fgets(nome, 1024, stdin);
if( nome == NULL )
printf("errore o niente\n");
else{
ris = -1;
printf("stringa inserita: %s", buffer);
}
}
write(sock, &nome, sizeof(nome));
}
/*utente da registrarsi*/
else if(r==2) printf("fd\n");
}
Penso possa essere un problema nel while(ris==1) qualcosa di concettuale, ma non riesco a trovare un a soluzione.
Grazie! ciao!