000
22.06.2006, 14:01 Uhr
-Biohazard-
|
Hallo Leute, ich habe ein kleines Problem mit meinem Server-Client-Programm. Ich habe schon im Board gesucht, fand zwar einen Beitrag, der mir jedoch nicht weiterhelfen konnte. Ich probiere mit meinem Programm Daten zu übertragen. Zwar ist die Datei, die am Ende herauskommt, gleichgroß wie die Quelldatei, hat aber, anders als im Normalfall, kein Icon und beim Öffnen kommt eine Fehlermeldung - sprich: sie ist beschädigt. Ich habe über den Editor die Inhalte beider Dateien schon angeguckt: im Unterschied sind viele Zeichen anders, nur das Grobe stimmt Der Server:
Code: |
FILE * fh_out = fopen( "unwise.exe", "wb" ); BYTE Chunk[256]; double realsize; // gesamte Dateigröße double readbytes; // gelesene Bytes char rs[RCVBUFSIZE]; // realsize als Char sd = recv( fd, rs, RCVBUFSIZE, 0 ); realsize = atof( rs ); while ( ( readbytes < realsize ) && ( sd > 0 ) ) { readbytes = ftell( fh_out ); // Datenzeiger ermitteln if ( readbytes < realsize ) // solange die gelesenen Bytes unter der Dateigröße sind { sd = recv( fd, Chunk, 256, 0 ); // empfangen fwrite( Chunk, 256, 1, fh_out ); } } fclose( fh_out );
|
Der Client
Code: |
FILE * fh_in = fopen( "C:\\UNWISE.exe", "rb" ); BYTE Chunk[256]; fseek( fh_in, 0, SEEK_END ); double realsize = ftell( fh_in ); // Dateigröße ermitteln fseek( fh_in, 0, SEEK_SET ); char rs[RCVBUFSIZE]; sprintf( rs, "%f", realsize ); rc = send( sock, rs, RCVBUFSIZE, 0 ); while ( ( fread( Chunk, 256, 1, fh_in ) ) && ( rc > 0 ) ) { rc = send( sock, Chunk, sizeof( Chunk ), 0 ); // senden } fclose( fh_in );
|
Wie schafft man es, immer 99,9% sicher zu sein, den selben Inhalt in der anderen Datei zu finden? Zwar habe ich die "Anzahl" der zu sendenden Bytes auf 1 gesenkt, jedoch dauert das Übertragen dann bald 3 Minuten!
Danke schonmal für eure kompetente Hilfe,
-Biohazard- --
Dieser Post wurde am 22.06.2006 um 14:04 Uhr von -Biohazard- editiert. |