sockaddr_in構造体

接続先のIPアドレスやポート番号の情報を保持するために,sockaddr_in構造体が 用意されており,各ソケットは,bindシステムコールによって sockaddr_in構造体のデータと関連づけられる.sockaddr_in構造体は次のように 定義されている.

/usr/include/netinet/in.h:
   struct in_addr {
      u_int32_t s_addr;
   };

   struct sockaddr_in {
      u_char  sin_len;    (このメンバは古いOSでは存在しない)
      u_char  sin_family;    (アドレスファミリ.今回はAF_INETで固定)
      u_short sin_port;    (ポート番号)
      struct  in_addr sin_addr;    (IPアドレス)
      char    sin_zero[8];    (無視してもよい.「詰め物」のようなもの)
   };

ポート番号やIPアドレスはネットワークバイトオーダー (big endian) になって いないといけない.このため,整数をネットワークバイトオーダーに変換する htons関数を用いる.

NAKAZAWA Koji
2014-09-30