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 フィルタとの相互作用
戻り値
エラー
関連項目
歴史

jman



Time: 07:06:28 GMT, January 12, 2009