LISTEN
Section: System Calls (2)
索引
jman
BSD mandoc
索引
名称
listen
- ソケット上の接続をリスンする
索引
ライブラリ
Lb libc
索引
書式
In sys/types.h
In sys/socket.h
Ft int
Fn listen int s int backlog
索引
解説
socket(2)
で最初にソケットが作成され、
着信接続を受け入れる意思および着信接続用の待ち行列限界が
Fn listen
で指定された後、接続が
accept(2)
で受け入れられます。
Fn listen
システムコールは、タイプが
SOCK_STREAM
または
SOCK_SEQPACKET
のソケットにだけ適用されます。
Fa backlog
引数は、延期中の接続の待ち行列を伸ばす際の最大長を定義します。
待ち行列が満杯のときに接続要求が到着すると、クライアントは
Er ECONNREFUSED
を示すエラーを受信する可能性があります。
TCP の場合は、接続は黙って落とされます。
Fx 4.5
以前で syncache が導入されるまでは、
Fa backlog
引数は不完全な接続の待ち行列の長さも定義していました。
この待ち行列には、TCP の 3 ウェイハンドシェークを完了させるべく処理中の
TCP ソケットが保持されています。
これらの不完全な接続は、現在すべて syncache に保持され、
これは待ち行列の長さに影響されません。
Fa backlog
値を増やすことによりサービス不能攻撃に対処する必要は、もはやありません。
sysctl(3)
MIB 変数
``kern.ipc.somaxconn
''
は
Fa backlog
のハードリミットを指定します。
kern.ipc.somaxconn
より大きい値、または 0 より小さい値が指定されている場合、
Fa backlog
の指定は無視されて
kern.ipc.somaxconn
の値にされます。
索引
ACCEPT フィルタとの相互作用
ソケットに対して accept フィルタを使用すると、
接続済みであるものの accept フィルタの基準にまだ合致しないソケットを
保持するための第 2 の待ち行列が使用されます。
ひとたび基準に合致すれば、これらのソケットは接続完了済の待ち行列に移動され、
accept(2)
の対象になります。
第 2 の待ち行列が満杯のときに新規接続が到着すると、
accept フィルタの基準にまだ合致しない最古のソケットが終了されます。
この第 2 の待ち行列は、第 1 の listen 待ち行列のように、
Fa backlog
引数に従って大きさが変わります。
索引
戻り値
Rv -std listen
索引
エラー
Fn listen
システムコールは次の場合に処理を失敗します:
- Bq Er EBADF
-
引数
Fa s
が有効な記述子ではありません。
- Bq Er EINVAL
-
そのソケットはすでに接続されているか、接続確立中です。
- Bq Er ENOTSOCK
-
引数
Fa s
がソケットではありません。
- Bq Er EOPNOTSUPP
-
ソケットが、
Fn listen
をサポートするタイプではありません。
索引
関連項目
accept(2),
connect(2),
socket(2),
sysctl(3),
sysctl(8),
accept_filter9
索引
歴史
Fn listen
システムコールは
BSD 4.2
で登場しました。
実行時に最大
Fa backlog
を設定できる機能、および許容できる最大値を指定する場合に負の
Fa backlog
を使用する機能は
Fx 2.2
で登場しました。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- ACCEPT フィルタとの相互作用
-
- 戻り値
-
- エラー
-
- 関連項目
-
- 歴史
-
Time: 07:06:28 GMT, January 12, 2009