|
|
Zahlendreher ntoh und hton
Die Bytefolge ist auf den verschiedenen Computern unterschiedlich definiert.
So besteht eine Variable vom Typ short aus zwei Byte. Auf einer Maschine mit
Intel-CPU kommt dabei das niederwerte Byte zuerst, während es auf einer
Motorola 68000 CPU genau umgekehrt ist. Beispielsweise entspricht die dezimale
Zahl 9220 der hexadezimalen 0x2404. Die Inteldarstellung lautet dann 0424,
während die Motorola CPU die Zahl als 2404 darstellt. In einem heterogenen
Netz muss es dafür
einen Standard geben. Unter TCP/IP steht das höherwertige Byte zuerst.
Man nennt diese Reihenfolge Big EndianDer Legende nach stammt diese Bezeichnung aus dem
Buch »Gullivers Reisen«, in dem sich zwei Völker darüber zerstreiten,
ob man das Ei am dicken Ende (big end) oder am dünnen Ende (little end)
zuerst aufmacht..
Um die Zahlendarstellung der Maschine in die Netzform zu überführen und die
Programme portabel
zu halten, gibt es die Makros
Um beispielsweise den Port des POP3 (110) in die sock_add_in-Struktur zu
schreiben, würde man hton verwenden.
Wird an dieser Stelle getservbyname verwendet, erledigt
sich die Notwendigkeit von hton.
struct sockaddr_in AdrSock; AdrSock.sin_port = hton(110);
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|