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) 在 网络