
Windows Socket 网 络 编 程 ( 二 ) — — 套 接 字 编 程 原 理
作 者 : 冰 点 工 作 室 小 鹰
一 、 客 户 机 / 服 务 器 模 式
在 TCP/IP 网 络 中 两 个 进 程 间 的 相 互 作 用 的 主 机 模 式 是 客 户 机 / 服 务 器 模 式
(Client/Server model) 。 该 模 式 的 建 立 基 于 以 下 两 点 : 1 、 非 对 等 作 用 ; 2 、 通 信
完 全 是 异 步 的 。 客 户 机 / 服 务 器 模 式 在 操 作 过 程 中 采 取 的 是 主 动 请 示 方 式 :
首 先 服 务 器 方 要 先 启 动 , 并 根 据 请 示 提 供 相 应 服 务 :( 过 程 如 下 )
1、打 开 一 通 信 通 道 并 告 知 本 地 主 机 ,它 愿 意 在 某 一 个 公 认 地 址 上 接 收 客 户 请 求 。
2、 等 待 客 户 请 求 到 达 该 端 口 。
3、 接 收 到 重 复 服 务 请 求 , 处 理 该 请 求 并 发 送 应 答 信 号 。
4、 返 回 第 二 步 , 等 待 另 一 客 户 请 求
5、 关 闭 服 务 器 。
客 户 方 :
1、 打 开 一 通 信 通 道 , 并 连 接 到 服 务 器 所 在 主 机 的 特 定 端 口 。
2、 向 服 务 器 发 送 服 务 请 求 报 文 , 等 待 并 接 收 应 答 ; 继 续 提 出 请 求 … …
3、 请 求 结 束 后 关 闭 通 信 通 道 并 终 止 。
二 、 基 本 套 接 字
为 了 更 好 说 明 套 接 字 编 程 原 理 ,给 出 几 个 基 本 的 套 接 字 ,在 以 后 的 篇 幅 中 会 给 出
更 详 细 的 使 用 说 明 。
1、 创 建 套 接 字 — — socket()
功 能 : 使 用 前 创 建 一 个 新 的 套 接 字
格 式 : SOCKET PASCAL FAR socket(int af,int type,int procotol);
参 数 : af: 通 信 发 生 的 区 域
type: 要 建 立 的 套 接 字 类 型
procotol: 使 用 的 特 定 协 议
2、 指 定 本 地 地 址 — — bind()
功 能 : 将 套 接 字 地 址 与 所 创 建 的 套 接 字 号 联 系 起 来 。
格 式 : int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int
namelen);
参 数 : s: 是 由 socket() 调 用 返 回 的 并 且 未 作 连 接 的 套 接 字 描 述 符 ( 套 接 字 号 )。
其 它 : 没 有 错 误 , bind() 返 回 0 , 否 则 SOCKET_ERROR
地 址 结 构 说 明 :
struct sockaddr_in
{