Man page - listen(2)

Packages contains this manual

Available languages:

en fr cs tr ja ru ro zh_TW zh_CN de

Manual

LISTEN

名 前
書 式
説 明
返 り 値
エ ラ ー
準 拠
注 意
例
関 連 項 目
こ の 文 書 に つ い て

名 前

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/ に 書 か れ て い る 。