読者です 読者をやめる 読者になる 読者になる

htons

UNIXシステムコール Sample

htonsは、ホストバイトオーダからネットワークバイトオーダに変換するライブラリ関数・・・。

Man page of BYTEORDER

作成したソケットには、自分のIPやポート番号などを紐付けるバインドという作業が必要・・・。
ホストコンピュータ(Intel x86搭載機など)ではバイトオーダが、リトルエンディアンなのに対し、ネットワークバイトオーダは、ビッグエンディアンという決まりなので、変換しなくてはならない・・・。

バイトオーダ - ビッグエンディアン/リトルエディアン

その変換をするための関数の一つで、htonsはとくにポート番号をネットワークバイトオーダに変換するときに使う・・・。

arpa/inet.h、またはnetinet/in.hをインクルード・・・。

ネットワークバイトオーダに変換した後のポート番号を格納する変数をu_short型(unsigned short型)で用意・・・。

htonsでポート番号3000をネットワークバイトオーダに変換・・・。

それをprintfで出力・・・。

10進数の3000は、16進数だと0bb8だが、

$ ./htons
ns_port = b80b
$

htonsで変換した後のns_portはb80bとなり、1バイト目と2バイト目が入れ替わっている・・・。

Sample/htons.c at master · bg1bgst333/Sample · GitHub