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!