HTTP Header vom File trennen
-
Hi,
leider werden meine Dateien immer unbrauchbar ( Anwendung ist keine win32 Anwendung oder Anwendung verweist auf Speicher 0x00000000
Wenn ich die Dateien per Editor vergleiche sehen sie aber gleich aus.Ich schreibe die Daten die mir der HTTP server sendet erstmal in ein TMP file danach filtere ich den Header raus und speichere den Rest als empfangene Datei.
// Antwort des Servers empfangen und auswerten // erstmal alles in ein File schreiben G_Out = fopen("OUT.DAT","w"); while ((bytes_recv = recv (sock, buf, sizeof(buf), 0)) > 0) { fwrite(buf, 1, bytes_recv, G_Out); } if (bytes_recv == -1) { fclose(G_Out); printf( "recv()"); remove("OUT.DAT"); return; } fclose(G_Out); FILE * G_in; long lSize; char * G_buffer; G_in = fopen ( "OUT.DAT" , "rb" ); G_Out = fopen( "FILE.DAT", "wb" ); if (G_in == NULL){ printf("Fehler: Keine Daten empfangen"); return; } // Filegroesse ermitteln fseek (G_in , 0 , SEEK_END); lSize = ftell (G_in); rewind (G_in); // Speicher reservieren G_buffer = (char*) malloc (lSize); if (G_buffer == NULL) exit (2); // File in den Buffer laden fread (G_buffer,1,lSize,G_in); // Head und File trennen G_zaehl = 0; G_headend = 0; while(G_zaehl<lSize){ if(!G_headend){ switch (G_buffer[G_zaehl]){ case 13: if(G_hit == 0) G_hit++; if(G_hit == 2) G_hit++; break; case 10: if(G_hit == 1) G_hit++; if(G_hit == 3) G_hit++; break; default: if(G_hit != 4) G_hit = 0; } if(G_hit == 4){ G_headend = 1; //Kopfende gefunden ( durch zweimaliges Return erkennbar ) } } else{ //File wird geschrieben char *G_File; G_File = (char*)calloc(lSize-G_zaehl,sizeof(char)); memcpy(G_File,G_buffer+G_zaehl,lSize-G_zaehl); fwrite(G_File, 1, lSize-G_zaehl, G_Out); break; } G_zaehl++; } fclose (G_in); fclose (G_Out); free (G_buffer);
thanx in advance
-
fopen("OUT.DAT","wb");
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Danke das hatte ich übersehen