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!