Winsock und Streams
-
Hallo! Ich bin grade an der Winsock Programmierung und will dateien verschicken. Dazu teile ich die Datei bsp Install.log in 16byte teile und schicke diese an den Server, der sie wieder zusammensetzt und in einer Datei speichert..
Das Problem ist: es werden die ersten und die letzten 16 Stellen weggelassen. Kann mir da jemand helfen?[/cpp]//////////////////////////////Client
FILE *fh_in;
char Chunk[16];
long filesize;
long chunksize = 16;
long bytesread = 0;
int prozent = 0;
int groesse = 0;
int packet = 0;
char buffor;
fh_in = fopen( "E:\\INSTALL.LOG", "rb" );
fseek( fh_in, 0, SEEK_END );
filesize = ftell(fh_in);
fseek( fh_in, 0, SEEK_SET );cout << "Datei Groesse: " << filesize << "\n";
groesse = filesize/chunksize;
cout << "Packete zu senden: \n" << groesse << "\n";
cout << "\nFortschtritt:\n";while( fread( Chunk, chunksize, 1, fh_in ))
{
packet++;
prozent = 100 * packet / groesse;
printf("\b\b\b\b\b\b\b\b\b%d%%", prozent);
printf(" (%d)", packet);
bytesread += chunksize;
if( bytesread > filesize - chunksize )
chunksize = filesize - bytesread;
send(sock,Chunk,chunksize,0);
Sleep(100);
}
send(sock,"finished",strlen("finished"),0);
printf("Fertig\n");
fclose(fh_in);
goto sendlabel;//////////////////////////////Server
FILE *fh_out;
char Chunk[16];
long filesize;
long chunksize = 16;
long bytesread = 0;
int prozent = 0;
int groesse = 0;
int packet = 0;
fh_out = fopen( "e:\\neu.log", "wb" );
cout << "Fange an!";while(!( Chunk == "finished" ))
{
cout << "Mache grad\n";
recv_size = recv(client_socket, Chunk,chunksize ,0);
Chunk[recv_size]='\0';
if (!strcmp(Chunk, "finished")){goto uploadlabel;}
fwrite( Chunk, chunksize, 1, fh_out );
}
uploadlabel:
fclose(fh_out);
printf("Fertig\n");[cpp]
-
ein bisschen schwer zu lesen benutzt ma bitte die code tags das nächste mal richtig.
ich würde dir empfehlen(wenns nur auf windows laufen soll) TransferFile() (heissts glaub ich) zu verwenden das ist extrem viel schneller
und bitte bitte bitte lass die verdammten gotos weg und mit der chunksize machs doch so:
char Chunk[chunksize];dass is ein bisschen dynamischer