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:
codice:
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);
.
.
.
lato_client

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);

}
Uscita:

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!