pl: C Pointerei

Beitrag lesen

Ok, ich formuliere das Poblem mal anders:

Was nützt ein Datentyp dessen Endiannes systemabhängig ist? Gar nichts!

Genausowenig nützt dann solch ein struct:

typedef struct{
    uint16_t id;
    uint16_t flags;

    usw...
}DNSHeader;

weil die Byteorder der Members systemabhängig sind.

Nein! Lies bitte noch einmal meinen Post und den Link auf die Manpage. ntohs stellt sicher, dass immer in die korrekte Host Byte Order konvertiert wird und htons immer korrekt in die Netzwerk Byte Order. Immer!

So!?

printf("%#x", htons(53) ); // 0x3500

Rauskommen muss aber 0x0035 ! Wenn das Ergebnis richtig sein soll, muss der Entwickler wissen daß Port 53 als short LE die Zahl 13568 verkörpert.

MfG