binary file lesen und verschicken [solved]



  • halloa,

    ich bin scheinbar zu **** aber ich find einfach nicht, wie ich ein binary file lesen kann...
    öffnen mit fopen(file, "rb")
    aber wie kann ich nun N bytes lesen (in einer while schleife) um diese dann per socket zu verschicken?

    ein link auf ein topic hilft mir auch, aber ich find einfach nichts vernünftiges!
    fread scheint nicht dafür gemacht zu sein 😞

    thx



  • also, öffnen per fopen und "rb" hast du ja schon.
    Lesen per fread und senden ganz normal wie man non binary daten auch sendet -> send

    du kannst auch per schleife und fgetc die bytes einzeln lesen, ist zwar nicht so ideal, aber vielleicht leichter zu verstehen...?

    Mhm, zeig mal etwas code, damit man sieht wo du hängst - ich denke nämlich eher du stehst eher vor dem Problem als ganzes. Du weisst nicht wie du da anfangen sollst, richtig? Versuch also erstmal eine Datei binaer auszulesen und am Bildschirm auszugeben. Dann sehen wir weiter 🙂



  • hallo,

    nein, eigentlich hab ich schon alles gemacht.
    aber das lesen funktionierte nicht ganz...
    also kann ich das schon mit fread machen. dachte das is nur für "blöcke" dh: jeder block ist gleich groß?

    thx



  • Wo genau liegt dann das Problem?

    Wieviel du mit fread liest, ist dir überlassen. Ob du alles aufeinmal, in 3 teilen , in 100 teilen oder jedes Byte einzeln liest ist deine Sache.

    Und wenn du mehr lesen willst als da ist, wird EOF gesetzt und du weisst, dass du am ende bist.



  • ok,

    das problem ist folgendes:
    wenn ich eine normale textdatei (egal wie groß) verschicke, dann passt alles - sogar md5sum.
    aber sobald ich zB ein pdf/avi verschicke passt nichts mehr. dh: das file ist korrupt.

    hast du eine idee, was da sein könnte?
    thx



  • hephaistos6 schrieb:

    hast du eine idee, was da sein könnte?

    Ein Fehler in deinem Code.

    Vermutlich verwendest du irgendwo eine Stringfunktion, d.h. eine Funktion, die von einer Nullterminierung der zu verarbeitenden Daten ausgeht, z.B. strlen.



  • MFK schrieb:

    Vermutlich verwendest du irgendwo eine Stringfunktion, d.h. eine Funktion, die von einer Nullterminierung der zu verarbeitenden Daten ausgeht, z.B. strlen.

    ganz genau! und das war auch das problem 😞
    hab einfach statt strlen(readBuffer) readBytes (also return value von fread) genommen 🙂

    danke dir!


Anmelden zum Antworten