Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Byte-Reihenfolge umwandeln

&pagelevel(3)&pagelevel

Wenn Sie die zuvor beschriebenen Funktionen für die Adressumwandlung verwenden, werden Sie in einem Internet-Anwenderprogramm Adressen selten direkt behandeln müssen. Sie können dann Services weitgehend netzunabhängig entwickeln. Ein Rest von Netzabhängigkeit bleibt jedoch bestehen, da in einem Anwenderprogramm die IPv4- bzw. IPv6-Adresse angegeben werden muss, wenn einem Service bzw. einem Socket ein Name zugeordnet wird.

Neben den Bibliotheksfunktionen für die Umwandlung von Namen in Adressen gibt es auch Makros, die die Behandlung von Namen und Adressen vereinfachen.

In einigen Architekturen sind Rechner-Byte-Reihenfolge und Netz-Byte-Reihenfolge unterschiedlich. Folglich müssen Programme manchmal die Byte-Reihenfolge verändern. Die in folgender Tabelle zusammengefassten Makros setzen lange und kurze Integer-Werte von Rechner-Byte-Reihenfolge in Netz-Byte-Reihenfolge um und umgekehrt.

Aufruf

Bedeutung

htonl(val)
htons(val)
ntohl(val)
ntohs(val)

32-bit-Felder von Rechner- in Netz-Byte-Reihenfolge umwandeln
16-bit-Felder von Rechner- in Netz-Byte-Reihenfolge umwandeln
32-bit-Felder von Netz- in Rechner-Byte-Reihenfolge umwandeln
16-bit-Felder von Netz- in Rechner-Byte-Reihenfolge umwandeln

Tabelle 1: Bibliotheks-Makros für die Umwandlung von Byte-Reihenfolgen

Die Makros für die Umwandlung von Byte-Reihenfolgen werden benötigt, weil die Bibliotheksfunktionen IPv4-Adressen und Portnummern in Netz-Byte-Reihenfolge erwarten. Die Bibliotheksfunktionen, welche Netzadressen zurückliefern, liefern diese in Netz-Byte-Reihenfolge, sodass sie einfach in Datenstrukturen kopiert werden können, die anderen Bibliotheksfunktionen beim Aufruf übergeben werden.

Probleme können aber beim Interpretieren von Netzadressen auftreten.

Bei IPv6-Adressen gibt es per Definition keinen Unterschied zwischen Rechner-Byte-Reihenfolge und Netz-Byte-Reihenfolge. Deshalb gibt es auch keine entsprechenden Umwandlungsfunktionen.

Im BS2000 sind Rechner-Byte-Reihenfolge und Netz-Byte-Reihenfolge identisch. Deshalb sind die in der Tabelle aufgelisteten Makros als Null-Makros (Makros ohne Inhalt) definiert. Für die Erstellung portabler Programme ist die Verwendung der Makros jedoch dringend zu empfehlen.