Provided by: manpages-ja-dev_0.5.0.0.20221215+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()  がサポートしている型ではない。

準拠

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

注意

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

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

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

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

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

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

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

       If  the  backlog  argument is greater than the value in /proc/sys/net/core/somaxconn, then it is silently
       truncated to that value.  Since Linux 5.4, the default in this file is  4096;  in  earlier  kernels,  the
       default  value  is 128.  In kernels before 2.4.25, this limit was a hard coded value, SOMAXCONN, with the
       value 128.

       bind(2)  参照。

関連項目

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

この文書について

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