putc und binärdateien



  • Hi!
    Kann man putc bzw. getc auch bei Binärdateien verwänden? Mein Ziel wäre es, eine Datei stückchenweise auszulesen, zu senden und dann wieder zusammen zu bauen. Also einen Filetransfer über das Internet. Mit putc und getc kann ich stink normale Textdateien wunderschön schicken, doch mit dateien wie .jpg etc. kommt immer nur schwachsinn an. Ich schätze mal es liegt daran, wie ich auslese bzw. schreibe:

    //Lese(beim Sender):
    			fhandle = fopen(file_transfere[i].filename,"rb"); //öffnet die Datei binär zum Lesen
    			if(fhandle == 0) {continue;}
    
    			fseek(fhandle,file_transfere[i].position-1,SEEK_SET); //setzt den Cursor zur letzten gesendeten Stelle
    			u = 0;
    			do //Lest die Bytes aus der Datei aus
    			{
    				buffer2[u] = getc(fhandle);
    				u++;
    			}while(!feof(fhandle) && u <= transfer_size);
    			u--;
    			buffer2[u] = 0;
    
    //Schreiben (beim Empfänger):
    			fhandle = fopen(/*file_transfere[i].filename*/"testtarget.txt","a+b"); //öffnet die Datei zum anhängen
    			if(fhandle == 0) {continue;}
    
    			u = -1;
    			do
    			{
    				u++;
    				putc(buffer[u],fhandle);
    			}while(u < buffer_length-1);
    

    Was mache ich falsch?

    Danke schon mal für eure Hilfe!



  • getc und putc sollten binär arbeiten

    allerdings sehe ich keinen sende-code. die datei wird einfach nur in einen
    buufer geschrieben bzw aus einem gelesen. wenn du die datei über das internet
    versenden willst, vermute ich dass du mit sockets arbeitest. dann solltest du
    nicht die ganze datei mit getc stückchenweise einlesen, sondern entweder
    einzelne zeichen senden, oder buffer von ~1kb - 2kb senden. bei tcp kannst
    du die ganze datei senden, aber dann lieber mit fread alles auf einmal einlesen


Anmelden zum Antworten