|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
[C]leggere file in modo binario
ho due programmi client server, e voglio inviare un file (qualsiasi, non solo di testo) al server. credo che la via giusta sia di aprire e leggere il file in modo binario:
quindi lo apro: FILE *F; char invio_dati[100]; F=fopen("file.gif", "rb"); poi lo leggo: while(fread (invio_dati, 1, 100, F)!=NULL) { ..} pero credo che qui sbaglio, anche perché quando arriva alla fine del file non esce dal loop. e nel server la stessa cosa,ma con: fwrite(ricezione_dati,1,100, F); Che errori faccio? grazie |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
non è detto che il valore di ritorno di fread sia 0 quando viene incontrata la fine del file: potrebbe essere il numero di items letti inferiore al previsto. inoltre fread non distingue tra EOF ed errore di I/O, quindi meglio usare feof.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ora pero non riesco a fermare la ricezione!
perché faccio cosi: client: while (!feof(F)) { fread (invio_dati, 1, 100, F); //Invio il messaggio send(client,invio_dati,100,0); printf("\n %s",invio_dati); } fclose(F); send(client,"chiuditi",100,0); server: while(1) { //Funzione recv per ricevere i dati recv(server,ricezione_dati,100,0); if( strcmp(ricezione_dati, "chiuditi")==0) break; fwrite(ricezione_dati,1,100, F); //Outputiamo i dati ricevuti printf("\nHo ricevuto >>> %s \n",ricezione_dati); //Il ciclo continua finchè non viene digitato "Chiuditi" } |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Questo è errato:
send(client,"chiuditi",100,0); Dove li va a prendere i 100 byte da quella stringa ??? |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
quanti byte sono quindi? 1 per lettera?
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì, +1 byte per il finestringa.
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
ok, ora funziona,grazie!
ora vorrei provare ad avviare il server su un computer a casa, e il programma client da un amico: basta mettere l'ip corretto per far funzionare il tutto? |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se chi fa il server ha la porta aperta sul router (se ce l'ha) e la porta è aperta sul firewall di Windows allora sì.
|
|
|
|
|
|
#9 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
edit - mi correggo, solo se tu non sei dietro NAT/firewall. post contemporaneo a quello di cionci |
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Aug 2006
Messaggi: 1262
|
un altra curiosità: dovrebbe essere possibile connettersi a dei server (ad es quelli da cui mi connetto con emule?)?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:41.




















