socklen_t
読み:ソックレン-ティー
外語:socklen_t

 CC++で、accept()で使用される、アドレスの長さを格納する型。
目次

定義
 FreeBSDでは、次のように定義される。
 sys/socket.h
 typedef __socklen_t socklen_t;
 sys/_types.h
 typedef __uint32_t __socklen_t;
 machine/_types.h
 typedef unsigned int __uint32_t;
 つまり、32ビット環境のFreeBSDでは、間接的にunsigned intで定義される。

由来
 accept()の第3引数は、元々はint *で宣言されていた。
 POSIXはこれが気に入らなかったらしく、POSIXドラフト版でsize_t *に変更した。しかしBSDソケットインターフェイスの仕様上、ここはintと同じサイズが要求されており、もし本当にsize_tにしてしまうと、size_tの長さがintより長い場合にソケット層が破壊されてしまう。このためクレームが入り、やむを得ずint *と同じ長さのsocklen_t *とすることでお茶が濁された、という経緯がある。

再検索