setsockopt(3SOCKET) と getsockopt(3SOCKET) を使用すると、ソケットのオプションを設定および取得できます。 たとえば、送信バッファー空間または受信バッファー空間を変更できます。次に、呼び出しの一般的な書式を示します。
setsockopt(s, level, optname, optval, optlen);
および
getsockopt(s, level, optname, optval, optlen);
オペレーティングシステムはいつでもこれらの値を適切に調整できます。
次に、setsockopt(3SOCKET) 呼び出しと getsockopt(3SOCKET) 呼び出しの引数を示します。
オプションの適用先であるソケット
sys/socket.h 内の記号定数 SOL_SOCKET が示すプロトコルレベル (ソケットレベルなど) を指定する
オプションを指定する、sys/socket.h で定義されている記号定数
オプションの値を示す
オプションの値の長さを示す
getsockopt(3SOCKET) の場合、optlen は値結果の引数です。初期状態時、optlen 引数は optval が示す記憶領域のサイズに設定されます。復帰時、optlen 引数は使用された記憶領域の長さに設定されます。
既存のソケットタイプを判断する必要があるとき、プログラムは SO_TYPE ソケットオプションと getsockopt(3SOCKET) 呼び出しを使用して inetd(1M) を起動する必要があります。
#include <sys/types.h> #include <sys/socket.h> int type, size; size = sizeof (int); if (getsockopt(s, SOL_SOCKET, SO_TYPE, (char *) &type, &size) < 0) { ... }
getsockopt(3SOCKET) のあと、type はソケットタイプの値 (sys/socket.h で定義) に設定されます。データグラムソケットの場合、type は SOCK_DGRAM です。