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); }Penso possa essere un problema nel while(ris==1) qualcosa di concettuale, ma non riesco a trovare un a soluzione.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"); }
Grazie! ciao!![]()

Rispondi quotando