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