↑: [[Linuxプログラミングインタフェース]]
- 本書には記載なし [[Zk/ref/man7.org|man7.org]] より引用
```c
int setsockopt(
socklen_t optlen;
int sockfd, int level, int optname,
const void optval [ optlen ],
socklen_t optlen );
```
- sockfdが指す[[Zk/ref/ソケット|ソケット]]のオプションを操作する関数
- 操作する場合はオプションが存在するレベルとオプション名を指定する必要がある
- ソケットAPIレベルで操作する場合はlevelに`SOL_SOCKET`を指定する
- その他のオプション制御は適切なプロトコルの番号を指定する必要がある
- TCPプロトコルによって動くことを示すにはTCPプロトコル番号に設定する
-
ソケット API レベルでオプションを操作するには、level に SOL_SOCKET を指定します。
その他のレベルでオプションを操作するには、そのオプションを制御する適切なプロトコルのプロトコル番号を指定します。
例えば、オプションが TCP プロトコルによって解釈されることを示すには、level を TCP のプロトコル番号に設定する必要があります。getprotoent(3) を参照してください。
引数 optval および optlen は、setsockopt() においてオプション値にアクセスするために使用されます。
optname および指定されたオプションは、解釈されることなく
適切なプロトコルモジュールに渡される。インクルードファイル <sys/socket.h> には、以下で説明するソケットレベルのオプションの定義が含まれている。
他のプロトコルレベルのオプションは、形式や名称が異なります。マニュアルのセクション 4 の該当項目を参照してください。
ほとんどのソケットレベルのオプションでは、optval として int 型の引数を使用します。
setsockopt() の場合、ブール値のオプションを有効にするには引数を 0 以外にし、無効にする場合は 0 を指定する必要があります。
利用可能なソケットオプションの詳細については、socket(7) および該当するプロトコルの man ページを参照してください。