Manpages

______________________________________________________________________________

NAME

socket - 打 开 一 个 TCP 网 络 连 接

总 览 SYNOPSIS

socket ?options? host port

socket -server command ?options? port _________________________________________________________________

描 述 DESCRIPTION

这 个 命 令 打 开 一 个 网 络 套 接 口 并 返 回 将 来 可 被 readputsflush 命 令 调 用 使 用 一 个 通 道 标 识 符 。 目 前 只 支 持 TCP 网 络 协 议 ; 将 来 的 发 行 可 能 包 括 对 补 充 协 议 的 支 持 。 依 赖 于 是 否 指 定 了 -server 开 关 , 可 以 使 用 socket 命 令 来 打 开 客 户 端 或 服 务 器 端 连 接 。

客 户 端 套 接 口 CLIENT SOCKETS

如 果 未 指 定 -server 选 项 , 则 打 开 一 个 的 连 接 的 客 户 端 并 且 命 令 返 回 一 个 可 被 用 于 读 写 的 通 道 标 识 符 。 Porthost 指 定 一 个 要 连 接 到 的 端 口 ; 必 须 有 一 个 服 务 器 接 受 在 这 个 端 口 上 的 连 接 。 Port 是 一 个 整 数 端 口 号 而 host 要 么 是 一 个 域 名 式 样 的 名 字 如 www.sunlabs.com 要 么 是 一 个 数 值 IP 地 址 如 127.0.0.1。 使 用 localhost 来 参 照 在 其 上 调 用 这 个 命 令 的 那 个 主 机 。 在 host 之 前 可 以 提 供 下 列 选 项 指 定 关 于 连 接 的 补 充 信 息 :

-myaddr addr

Addr 给 出 用 于 连 接 的 客 户 端 网 络 接 口 的 域 名 式 样 的 名 字 或 数 值 IP 地 址 。 如 果 客 户 端 机 器 有 多 个 网 络 接 口 的 话 这 个 选 项 会 有 用 处 。 如 果 省 略 了 这 个 选 项 , 则 由 系 统 软 件 选 择 客 户 端 接 口 。

-myport port

Port 指 定 用 于 连 接 的 客 户 端 的 一 个 整 数 端 口 号 。 如 果 省 略 了 这 个 选 项 , 则 由 系 统 软 件 随 机 的 选 择 客 户 端 口 号 。

-async

-async 选 项 将 导 致 客 户 端 套 接 口 被 异 步 的 连 接 。 这 意 味 着 这 个 套 接 口 将 被 立 即 建 立 , 但 在 到 socket的 调 用 返 回 的 时 候 可 能 仍 未 连 接 到 服 务 器 上 。 在 连 接 尝 试 成 功 或 失 败 之 前 调 用 了 gets 或 flush 的 时 候 , 如 果 套 接 口 在 阻 塞 模 式 下 , 则 将 等 待 直 到 连 接 被 完 成 或 失 败 。 如 果 套 接 口 在 非 阻 塞 模 式 之 下 , 而 在 连 接 尝 试 成 功 或 失 败 之 前 调 用 了 gets 或 flush , 则 操 作 立 即 返 回 , 并 且 在 套 接 口 上 的 fblocked 返 回 1。

服 务 器 套 接 口 SERVER SOCKETS

如 果 指 定 了 -server 选 项 , 则 新 套 接 口 将 是 用 port 给 出 的 端 口 的 一 个 服 务 器 。 Tcl 将 自 动 接 受 到 这 个 给 定 端 口 的 连 接 。 对 于 每 个 连 接 Tcl 将 建 立 可 以 用 来 同 客 户 通 信 的 一 个 新 通 道 。 Tcl 接 着 调 用 command 并 加 上 三 个 补 充 参 数 : 新 通 道 的 名 字 , 用 网 络 地 址 表 示 的 客 户 的 主 机 地 址 , 和 客 户 的 端 口 号 。 在 host 之 前 可 以 提 供 下 列 选 项 指 定 关 于 连 接 的 补 充 信 息 :

-myaddr addr

Addr 给 出 用 于 连 接 的 服 务 器 端 网 络 接 口 的 域 名 式 样 的 名 字 或 数 值 IP 地 址 。 如 果 服 务 器 机 器 有 多 个 网 络 接 口 的 话 这 个 选 项 会 有 用 处 。 如 果 省 略 了 这 个 选 项 , 则 服 务 器 套 接 口 被 绑 定 到 特 殊 地 址 INADDR_ANY 上 , 这 样 它 可 以 接 受 来 自 任 何 接 口 的 连 接 。 服 务 器 通 道 不 能 被 用 来 输 入 或 输 出 ; 它 们 唯 一 的 用 处 是 接 受 新 的 客 户 连 接 。 为 每 个 到 来 的 客 户 连 接 建 立 的 通 道 是 为 输 入 和 输 出 而 打 开 的 。 关 闭 服 务 器 通 道 将 关 断 服 务 器 , 这 样 就 不 能 接 受 新 连 接 了 , 不 影 响 现 存 的 连 接 。 服 务 器 套 接 口 依 赖 于 Tcl 事 件 机 制 来 找 出 何 时 打 开 了 新 连 接 。 如 果 应 用 未 进 入 事 件 循 环 , 例 如 通 过 调 用 vwait 命 令 或 调 用 C 过 程 Tcl_DoOneEvent, 则 不 接 受 连 接 。

配 置 选 项 CONFIGURATION OPTIONS

可 以 使 用 fconfigure 命 令 来 查 询 套 接 口 通 道 的 许 多 只 读 配 置 选 项 :

-error 这 个 选 项 得 到 给 定 套 接 口 的 当 前 错 误 状 态 。 在 你 需 要 确 定 一 个 异 步 连 接 操 作 是 否 成 功 的 时 候 这 个 选 项 会 有 用 处 。 如 果 有 一 个 错 误 , 则 返 回 错 误 消 息 。 如 果 没 有 错 误 , 则 返 回 空 串 。
-sockname
这 个 选 项 返 回 三 个 元 素 的 一 个 列 表 , 分 别 是 这 个 套 接 口 的 地 址 、 主 机 名 和 端 口 号 。 如 果 不 能 计 算 出 这 个 主 机 名 , 第 二 个 元 素 等 同 与 列 表 的 第 一 个 元 素 地 址 。
-peername
服 务 器 套 接 口 不 支 持 这 个 选 项 。 对 于 客 户 和 接 受 的 套 接 口 , 这 个 选 项 返 回 三 个 元 素 的 一 个 列 表 ; 它 们 是 地 址 、 主 机 名 字 和 对 等 的 套 接 口 所 连 接 或 绑 定 到 端 口 。 如 果 不 能 计 算 出 这 个 主 机 名 , 第 二 个 元 素 等 同 与 列 表 的 第 一 个 元 素 地 址 。

参 见 SEE ALSO

flush(n), open(n), read(n)

关 键 字 KEYWORDS

bind, channel, connection, domain name, host, network address, socket, tcp

[中 文 版 维 护 人 ]

寒 蝉 退 士

[中 文 版 最 新 更 新 ]

2001/11/10

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

http://cmpp.linuxforum.net

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