listen

Section: System Calls (2)
Updated: 2026-02-11
Index JM Home Page roff page
 

名前

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

ライブラリ

標準 C ライブラリ (libc,~-lc)  

書式

#include <sys/socket.h>

int listen(int sockfd, int backlog);
 

説明

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

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

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

返り値

On success, zero is returned. On error, -1 is returned, and errno is set to indicate the error.  

エラー

EADDRINUSE
別のソケットが既に同じポートを listen している。
EADDRINUSE
(インターネットドメインソケットの場合) sockfd が参照するソケットがそれ以前にアドレスにバインドされておらず、 そのソケットに一時ポートをバインドしようとした際に、 一時ポートとして使用する範囲のポート番号がすべて使用中であった。 ip(7) の /proc/sys/net/ipv4/ip_local_port_range の議論を参照のこと。
EBADF
引数 sockfd は有効なファイルディスクリプターでない。
ENOTSOCK
ファイルディスクリプター sockfd がソケットを参照していない。
EOPNOTSUPP
ソケットは listen() がサポートしている型ではない。
 

標準規格

POSIX.1-2024.  

歴史

4.2BSD, POSIX.1-2001.  

注意

接続を受け付けるには、以下の処理が実行される。
(1)
socket(2) でソケットを作成する。
(2)
bind(2) を使ってソケットにローカルアドレスを割り当てて、 他のソケットがこのソケットに connect(2) できるようにする。
(3)
listen() を使って、接続要求を受け付ける意志と接続要求を入れるキュー長を指定する。
(4)
accept(2) を使って接続を受け付ける。

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 capped to that value. Since Linux 5.4, the default in this file is 4096; in earlier kernels, the default value is 128. Before Linux 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)


 

Index

名前
ライブラリ
書式
説明
返り値
エラー
標準規格
歴史
注意
例
関連項目

This document was created by man2html, using the manual pages.