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

bind

UNIXシステムコール Sample

bindは、作成したソケットのソケットファイルディスクリプタと、自身のIPアドレスやポート番号などの情報を紐付けるUNIXシステムコール・・・。

Man page of BIND

socketでソケットを作成はしたものの、自分のIPや使用するポートがわからなければ通信できない・・・。
そこで、bindでソケットとそれらの情報を紐付ける・・・。

sockaddr_in構造体のaddrを用意・・・。

ソケットを作成し、

addrにさまざまな情報を入れる・・・。
sin_familyには、AF_INETをセット・・・。IPv4アドレスファミリー・・・。
sin_portには、ポート番号をhtonsでセット・・・。3000ポートをちゃんとネットワークバイトオーダに・・・。
sin_addr.s_addrには、INADDR_ANYをセット・・・。これは、すべてのローカルインターフェイスにバインドするという意味・・・。複数NICがあっても一つのソケット・・・。

bindにsoc、addrのアドレス、addrのサイズを渡す・・・。
このとき、addrのアドレスはstruct sockaddr *にキャストする・・・。
bindは成功したら0を返す・・・。

$ ./bind
soc = 3
bind success.
$

bindに成功した・・・。

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