View Full Version : [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
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.
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"
}
Questo è errato:
send(client,"chiuditi",100,0);
Dove li va a prendere i 100 byte da quella stringa ???
quanti byte sono quindi? 1 per lettera?
Sì, +1 byte per il finestringa.
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?
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?
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ì.
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? solo se l'amico non è dietro NAT/firewall
edit - mi correggo, solo se tu non sei dietro NAT/firewall. post contemporaneo a quello di cionci :D
un altra curiosità: dovrebbe essere possibile connettersi a dei server (ad es quelli da cui mi connetto con emule?)?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.