socket 编 程 原 理 1 问 题 的 引 入 UNIX 系 统 的I/O 命 令 集 , 是 从Maltics 和 早 期 系 统 中 的 命 令 演 变 出 来 的 , 其 模 式 为 打 开 一读 /写 一 关 闭 ( open-write-read-close)。 在 一 个 用 户 进 程 进 行 I/O 操 作 时 , 它 首 先 调 用 “打 开 ”获得对指定文件或设备的 使用 权, 并返回称为 文件描述符的 整型数, 以描述用 户 在 打 开 的 文件或设备上进 行I/O 操 作 的 进 程 。 然后这个 用 户 进 程 多次调 用 “读 /写 ”以传输数据。 当所有的 传输操 作 完成后, 用 户 进 程 关 闭 调 用 , 通知操 作 系 统 已经完成了对某对象的 使用 。 TCP/IP 协议被集 成到 UNIX 内核中 时 , 相当于在UNIX 系 统 引 入 了一 种新型的I/O 操 作 。UNIX 用 户 进 程 与网络协议的 交互作 用 比用 户 进 程 与传统 的 I/O 设备相互作 用 复杂得多。 首先 , 进 行 网络操 作 的 两个 进 程 不在 相同机器上, 如何建立它 们之间的 联 系 ? 其 次, 网络协议存 在 多种,如何建立一 种通用 机制 以支 持 多种协议? 这些 都 是 网络应 用 编 程 界 面 所要 解 决 的问 题 。 在 UNIX 系 统 中 , 网络应 用 编 程 界 面 有两类 : UNIX BSD 的 套 接 字 ( socket) 和 UNIX System V 的 TLI。 由 于 Sun 公 司 采 用 了支 持 TCP/IP 的 UNIX BSD 操 作 系 统 , 使 TCP/IP 的 应 用 有更大 的 发 展 , 其 网络应 用 编 程 界 面 ──套 接 字 ( socket) 在 网络软 件中 被广 泛 应 用 , 至 今 已引 进微 机操 作 系 统 DOS 和 Windows 系 统 中 , 成为 开 发 网络应 用 软 件的 强 有力 工 具 , 本 章 将 要 详细 讨 论 这个 问 题 。 2 套 接 字 编 程 基 本 概 念 开 始 使用 套 接 字 编 程 之前 , 首 先 必 须 建立以下 概 念 。 2.1 网间进 程 通信 进 程 通信 的 概 念 最 初 来 源 于单 机系 统 。 由 于每 个 进 程 都 在 自 己 的 地 址 范 围 内运 行 , 为 保 证 两个 相互通信 的 进 程 之...