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