LISTEN

Section: Linux Programmer's Manual (2)
Updated: 1993-07-23
Index JM Home Page roff page
 

名前

listen - ソケット(socket)上の接続を待つ  

書式

#include <sys/types.h>          /* 「注意」参照 */

#include <sys/socket.h> int listen(int sockfd, int backlog);
 

説明

接続を受け付けるために、ソケットは最初に socket(2) で生成される。 入ってくる接続のためのキューの最大長は listen() によって指定されたあと、接続が accept(2) によって受け付けられる。 listen() コールは SOCK_STREAM 型または SOCK_SEQPACKET 型のソケットのみに適用できる。

backlog 引き数は、保留中の接続のキューが拡張することのできる最大長を指定する。 キューがいっぱいの状態で接続要求が到着すると、クライアントは ECONNREFUSED というエラーを受け取る。下位層のプロトコルが再送信をサポート していれば、要求は無視され、リトライが成功するかもしれない。  

返り値

成功時には0を返す。エラー時には -1を返し、 errno を適切に設定する。  

エラー

EADDRINUSE
別のソケットが既に同じポートを listen している。
EBADF
引き数 sockfd は有効なディスクリプターではない。
ENOTSOCK
引き数 sockfd はソケットではない。
EOPNOTSUPP
ソケットは listen() がサポートしている型ではない。
 

準拠

4.4BSD, POSIX.1-2001. listen() 関数は 4.2BSDで初めて実装された。  

注意

POSIX.1-2001 では <sys/types.h> のインクルードは必須とされておらず、 Linux ではこのヘッダファイルは必要ではない。 しかし、歴史的には、いくつかの実装 (BSD 系) でこのヘッダファイルが 必要であり、移植性が必要なアプリケーションではこのファイルを インクルードするのが賢明であろう。

TCP ソケットでの backlog 引き数の振る舞いは Linux 2.2 で変更された。 現在ではこの引き数は、 受け付けられるのを待っている、 完全に 確立されたソケットのキューの長さを指定する。 以前は不完全な接続要求の数であったが、これを置き換えた。 不完全なソケットのキューの最大長は sysctl 関数の tcp_max_syn_backlog を用いてセットする。 syncookie が有効になっている場合、 論理的に最大長は存在せず、 sysctl 関数による設定は無視される。

backlog 引き数が /proc/sys/net/somaxconn の値よりも大きければ、 backlog の値は暗黙のうちにこの値に切り詰められる。 このファイルのデフォルト値は 128 である。 バージョン 2.4.5 以前のカーネルでは、この上限値は コード埋め込みの固定値 SOMAXCONN であり、その値は 128 であった。  

bind(2) 参照。  

関連項目

accept(2), bind(2), connect(2), socket(2)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
関連項目

This document was created by man2html, using the manual pages.
Time: 04:31:50 GMT, November 19, 2007