プログラミングインタフェース

ソケットオプション

setsockopt(3SOCKET)getsockopt(3SOCKET) を使用すると、ソケットのオプションを設定および取得できます。 たとえば、送信バッファー空間または受信バッファー空間を変更できます。次に、呼び出しの一般的な書式を示します。

setsockopt(s, level, optname, optval, optlen);

および

getsockopt(s, level, optname, optval, optlen);

オペレーティングシステムはいつでもこれらの値を適切に調整できます。

次に、setsockopt(3SOCKET) 呼び出しと getsockopt(3SOCKET) 呼び出しの引数を示します。

s

オプションの適用先であるソケット

level

sys/socket.h 内の記号定数 SOL_SOCKET が示すプロトコルレベル (ソケットレベルなど) を指定する

optname

オプションを指定する、sys/socket.h で定義されている記号定数

optval

オプションの値を示す

optlen

オプションの値の長さを示す

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 で定義) に設定されます。データグラムソケットの場合、typeSOCK_DGRAM です。