Rechercher une page de manuel
listen
Langue: ja
Version: 1993-07-23 (fedora - 25/11/07)
Section: 2 (Appels système)
名前
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)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre