Versionen dieses Beitrags

C Pointerei

pl
  • C Pointerei
  • 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:
  • ~~~c
  • 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!?
  • ~~~c
  • printf("%#x", htons(53) ); // 0x3500
  • ~~~
  • Rauskommen muss aber `0x0035` !
  • 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