Fetch Protokoll



  • Ich sitze gerade daran mit UDP auf einem Unix-PC ein Programm zu schreiben, dass mir von einem entfernten Host ein bestimmte Datei zuschickt (Server/Client basiert).

    Funktioniert auch alles ganz toll, nur jetzt möchte ich in die UDP-Pakete gemäß TFTP-Protokoll rfc1350 wie folgt einteilen:

    2 bytes 2 bytes n bytes
    ----------------------------------
    | Opcode | Block # | Data |
    ----------------------------------

    Mein Problem ist, ich kriege mit

    unsigned short getShortAt(char *addr) {
    return ntohs(*((unsigned short*) addr));
    }
    

    die ersten 2 bytes ausgelesen, aber wie kriege ich die in meinen Buffer (der dann als Nachricht weggeschickt wird) eine 2 Byte große short int Zahl reingeschrieben? Es muss ungefähr so aussehen:

    void putShortAt(char* buf, short value) {
    //füge an die ersten beiden bytes value ein
    //verschiebe den rest nach hinten
    }
    

    Ich bin über jeden Lösungsansatz dankbar!



  • short n = htons(value);
    memcpy(buf, &n, sizeof(short));
    

    So würde ichs machen.



  • Super..es funktioniert! Herzlichen Dank!


Anmelden zum Antworten