設定 socket 選項 (options) 功能。
int getsockopt(int fd,
int level, int optname, void *optval, int *optlen);
int setsockopt(int fd,
int level, int optname, const void *optval, int optlen);
成功回傳 0、失敗回傳 -1。
- level:處理選項的 layer,例如 SOL_SOCKET、IPPROTO_IP。
- optname:是要設定或取得的選項,透過值 optval 和長度 optlen。取得時,optlen 給 optval 長度,並回傳取得的 optval 長度。
有些選項是唯讀的,只能 getsockopt()。有些選項是唯寫的,只能 setsockopt()。
見 TLPI §61.11,accept() 會繼承 listen() socket 的選項。dup() 和 fork() 也會
SOL_SOCKET SO_TYPE 唯讀 取得 socket 類型 int SOCK_STREAM、SOCK_DGRAM
multicasting 用在 family AF_INET (?AF_INET6)、type 是 SOCK_DGRAM 或 SOCK_RAW 的 socket。常用在 SOCK_DGRAM,如果用在 routing daemon 可能需要 SOCK_RAW。level 是 IPPROTO_IP,有關的選項包括:
setsockopt() getsockopt() IP_MULTICAST_LOOP yes yes IP_MULTICAST_TTL yes yes IP_MULTICAST_IF yes yes IP_ADD_MEMBERSHIP yes no IP_DROP_MEMBERSHIP yes no
參考
Stevens et al., 2004
tcp(7), udp(7), ip(7). scoket(7), unix(7) manual pages
沒有留言:
張貼留言