Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all bug

名前

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

書式

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

       int listen(int sockfd, int backlog);

説明

       listen()   は  sockfd が参照するソケットを接続待ちソケット (passive socket) として印をつけ
       る。 接続待ちソケットとは、 accept(2)   を使って到着した接続要求を受け付けるのに使用される
       ソケットである。

       sockfd 引き数は、 SOCK_STREAM 型か SOCK_SEQPACKET 型のソケットを参照するファイルディスクリ
       プターである。

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

返り値

       成功した場合にはゼロが返される。エラー時には -1 が返され、 errno が適切に設定される。

エラー

       EADDRINUSE
              別のソケットが既に同じポートを listen している。

       EADDRINUSE
              (インターネットドメインソケットの場合)  sockfd が参照するソケットがそれ以前にアドレ
              スにバインドされておらず、 そのソケットに一時ポートをバインドしようとした際に、  一
              時ポートとして使用する範囲のポート番号がすべて使用中であった。       ip(7)       の
              /proc/sys/net/ipv4/ip_local_port_range の議論を参照のこと。

       EBADF  引き数 sockfd は有効なディスクリプターでない。

       ENOTSOCK
              引き数 sockfd はソケットではない。

       EOPNOTSUPP
              ソケットは listen()  がサポートしている型ではない。

準拠

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

注意

       接続を受け付けるには、以下の処理が実行される。

           1.  socket(2)  でソケットを作成する。

           2.  bind(2)  を使ってソケットにローカルアドレスを割り当てて、 他のソケットがこのソケッ
               トに connect(2)  できるようにする。

           3.  listen()  を使って、接続要求を受け付ける意志と接続要求を入れるキュー長を指定する。

           4.  accept(2)  を使って接続を受け付ける。

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

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

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

       bind(2)  参照。

関連項目

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

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。