LISTEN(2)

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

書式
#include <sys/socket.h>

int listen(int s, int backlog);

説明
接続を受け付けるために、ソケットは最初に socket(2) で生成される。 入ってくる接続のためのキューの最大長は listen によって指定されたあと、接続が accept(2) によって受け付けられる。 listen コールは SOCK_STREAM 型または SOCK_SEQPACKET 型のソケットのみに適用できる。 backlog 引き数は、保留中の接続のキューが拡張することのできる最大長を指定する。 キューがいっぱいの状態で接続要求が到着すると、クライアントは ECONNREFUSED という表示とともにエラーを受け取る。下位層のプロトコルが再送信をサポート していれば、要求は無視され、リトライが成功するかもしれない。

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

エラー

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

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

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

準拠
SVr4, 4.4BSD ( listen 関数は 4.2BSDで初めて実装された)。

バグ
ソケットが af_inet 型であり、 backlog 引き数が SO_MAXCONN 定数(2.0.23では128) よりも大きければ、backlogは暗黙に SO_MAXCONN に切り詰められる。 BSD(と、少なくともBSDから派生したシステム)では backlog を 5 に 制限しているので、移植性を考慮したアプリケーションではこの値に頼らない。

関連項目
accept(2), connect (2), socket (2)