Manpages

NAME 名 称

listen - listen for connections on a socket 在 一 个 套 接 字 上 倾 听 连 接

SYNOPSIS 概 述

#include <sys/socket.h>

int listen(int s, int backlog);

DESCRIPTION 描 述

在 接 收 连 接 之 前 ,首 先 要 使 用 socket(2) 创 建 一 个 套 接 字 ,然 后 调 用 listen 使 其 能 够 自 动 接 收 到 来 的 连 接 并 且 为 连 接 队 列 指 定 一 个 长 度 限 制 . 之 后 就 可 以 使 用 accept(2) 接 收 连 接 . listen 调 用 仅 适 用 于 SOCK_STREAM 或 者 SOCK_SEQPACKET 类 型 的 套 接 字 . 参 数 backlog 指 定 未 完 成 连 接 队 列 的 最 大 长 度 .如 果 一 个 连 接 请 求 到 达 时 未 完 成 连 接 队 列 已 满 ,那 么 客 户 端 将 接 收 到 错 误 ECONNREFUSED. 或 者 ,如 果 下 层 协 议 支 持 重 发 ,那 么 这 个 连 接 请 求 将 被 忽 略 ,这 样 客 户 端 在 重 试 的 时 候 就 有 成 功 的 机 会 .

NOTES 注 意

在 TCP套 接 字 中 backlog 的 含 义 在 Linux 2.2中 已 经 改 变 . 它 指 定 了 已 经 完 成 连 接 正 等 待 应 用 程 序 接 收 的 套 接 字 队 列 的 长 度 ,而 不 是 未 完 成 连 接 的 数 目 .未 完 成 连 接 套 接 字 队 列 的 最 大 长 度 可 以 使 用 tcp_max_syn_backlog sysctl设 置 当 打 开 syncookies时 不 存 在 逻 辑 上 的 最 大 长 度 ,此 设 置 将 被 忽 略 .参 见 tcp(7) 以 获 取 更 多 信 息 .

RETURN VALUE 返 回 值

函 数 执 行 成 功 时 返 回 0.错 误 时 返 回 -1,并 置 相 应 错 误 代 码 . errno

ERRORS 错 误

EBADF 参 数

s 不 是 合 法 的 描 述 符 .

ENOTSOCK 参 数 s 不 是 一 个 套 接 字 .
EOPNOTSUPP
套 接 字 类 型 不 支 持 listen 操 作 .

CONFORMING TO 兼 容 于

Single Unix, 4.4BSD, POSIX 1003.1g. listen 函 数 调 用 最 初 出 现 于 4.2BSD.

BUGS 勘 误

如 果 套 接 字 类 型 是 AF_INET, 并 且 参 数 backlog 大 于 常 量 SOMAXCONN (Linux 2.0&2.2中 是 128),它 将 被 自 动 截 断 为 SOMAXCONN 的 值 . 有 的 BSD系 统 (以 及 一 些 BSD扩 展 )将 backlog值 限 制 为 5.

SEE ALSO 参 见

accept(2), connect(2), socket(2)

[中 文 版 维 护 人 ]

byeyear <love_my_love [AT] 263.net >

[中 文 版 最 新 更 新 ]

2002.01.27

《 中 国 linux论 坛 man手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh