Provided by:
manpages-ja-dev_0.5.0.0.20070415-1_all 
前
getsockopt, setsockopt - ソケットのオプションの設定と取得を行なう
式
#include <sys/types.h>
#include <sys/socket.h>
int getsockopt(int s, int level, int optname, void *optval, socklen_t
*optlen);
int setsockopt(int s, int level, int optname, const void *optval,
socklen_t optlen);
明
getsockopt() と setsockopt() はソケットに関連する options
を操作する。オプションは複数のプロトコル層(level)に存在するかもしれないが、
これらは常に最上位の socket 層へと設定される。
ソケット・オプションを操作する際には、オプションの層(level)とオプションの
名前を指定しなければならない。ソケット層でオプションを操作する為には、
level を SOL_SOCKET に指定する。
他の全ての層でオプションを操作する為には、与えられたオプションの
制御主体となるプロトコルのプロトコル番号を指定する。例えば、
オプションが TCP プロトコルで解釈されるべい海箸鮖惻┐垢襪砲蓮 level に
TCP のプロトコル番号を指定しなければならない。 getprotoent(3)
を参照すること。
optval と optlen パラメーターは setsockopt()
のオプションの値にアクセスするために用いられる。 getsockopt()
では要求したオプションの値を返すためのバッファーを指定する。 getsock-
opt() では optlen は値と結果両用のパラメーターで、最初に optval
の指しているバッファーのサイズを与え、実際に返される値のサイズに 書-
換えられる。もしオプション値を与えず、返されもしない場合には optval は
NULL でも良い。
optname
および指定されたオプションは解釈されずに、適切なプロトコル・モジュールに
渡されて解釈される。インクルード・ファイル <sys/socket.h>
には後述のソケット層のオプションの定義が含まれている。
他のプロトコル層では名前や形式は異なる。 マニュアルのセクション 4
の適切なエントリを参照すること。
ほとんどのソケット層のオプションは optval に int
パラメーターを利用する。 setsockopt() で、二値(boolean)オプションを-
効(enable)にするにはゼロ以外を指定し、 無効(dis-
able)にするにはゼロを指定する。
利用可能なソケットオプションの説明に関しては、 socket(7)
と適切なプロトコルの man ページを参照のこと。
値
成功した場合にはゼロを返す。エラー時には -1 が返され、 errno
が適切に設定される。
ー
EBADF 引た s が邑なディスクリプタでない。
EFAULT optval で指定されたアドレスがプロセスのアドレス空間の-
効な部分ではない。 getsockopt() の場合、 optlen
がプロセスのアドレス空間の-
効な部分でない場合にもこのエラーが返される。
EINVAL setsockopt() で option が不正である。
ENOPROTOOPT
指定された層(level)にはこのオプションは存在しない。
ENOTSOCK 引た s はファイルであり、ソケットでない。
拠
SVr4, 4.4BSD (これらのシステム・コールは 4.2BSD で最初に現れた),
POSIX.1-2001.
意
getsockopt と setsockopt の optlen 引た瑤麓尊櫃 int [*] である (そして
4.x BSD と libc4 と libc5 はそうなっている)。 POSIX
では紆余曲折を経て現在の socklen_t になっており、 glibc でも socklen_t
を使っている。 accept(2) も参照のこと。
グ
ソケットのオプションのいくつかはシステムのより低い層で 処理されるべ-
である。
ioctl(2), socket(2), getprotoent(3), protocols(5), socket(7), tcp(7),
unix(7)