000
07.02.2006, 11:37 Uhr
~Sourcer0r
Gast
|
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?
C++: |
//////////////////////////////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");
|
mod edit: benutze die Board Tags selber! Dieser Post wurde am 07.02.2006 um 17:31 Uhr von Pablo editiert. |