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