Ciao a tutti,
sto cercando di scrivere una semplice applicazione client/server in C sotto linux. ho consultato i vecchi post facendo una ricerca con "socket C" e ho trovato vari esempi da cui ho tratto spunto per risolvere altri problemi; tuttavia rimango fermo a questo punto:
io dovrei trasferire da client a server una stringa intera completa di spazi con cui specificare, ad esempio, un comando come "copia <sorgente> <destinazione>"; per fare questo uso la funzione fgets(). però al server arrivano come tre stringhe separate e non so come fare! allego il codice con un esempio di uscita attuale (errata).
lato_server:
lato_clientcodice:char buffer[1024]; FILE* in,*out; in=fdopen(sk,"r"); out=fdopen(sk,"a"); setbuf(in,NULL); setbuf(out,NULL); const char*bye={"bye"}; for(;;){ /*....*/ fscanf(in,nullo,"%s",buffer); printf("Recieved string: %s\n",buffer); if( strcmp(buffer, bye) == 0){ close(sc); exit(0); } /*...*/ } close(sc); . . .
Uscita:codice:char nome[1024]; FILE* in,*out; in=fdopen(sk,"r"); out=fdopen(sk,"a"); setbuf(in,NULL); setbuf(out,NULL); for(;;){ printf("FTP>"); fgets(nome,sizeof(nome),stdin); printf(nome,"%s"); fprintf(out,nome); }
client: FTP> copia sorg dest
server: received message: copia
server: received message: sorg
server: received message: dest
un altro problema che da questo codice è che il server una volta ricevuto la stringa "bye" che dovrebbe chiudere la connessione, va in loop stampando a video "bye". Non ne posso piu, vi prego ditemi dove sto sbagliando!![]()
grazie mille!


grazie mille!
Rispondi quotando
