开发经验

基 于WWW 的 电 子 白 板 的 设 计 与 实 现

北 京 航 空 航 天 大 学 计 算 机 系
郑 沛


1. 什 么 是 电 子 白 板

---- 电 子 白 板 技 术 最 初 是 指 多 媒 体 视 频 会 议 系 统 中, 与 会 者 通 过 某 个 界 面 实 时 共 享 数 据 并 协 作 的 技 术。 任 何 与 会 者 在 电 子 白 板 上 的 操 作, 包 括 简 单 的 图 形 绘 制 操 作, 文 字 输 入 操 作 等, 都 可 以 实 时 地 与 其 他 与 会 者 共 享。 更 复 杂 的 白 板 要 支 持 窗 口 共 享 以 及 本 地 多 媒 体 的 链 接 与 嵌 入, 并 且 可 以 将 每 一 个 图 形 实 体 作 为 对 象 保 存 到 文 件 中。 随 着WWW 的 发 展 以 及Browser/Server 计 算 模 式 的 日 益 流 行, 电 子 白 板 技 术 已 经 不 仅 仅 局 限 于 应 用 在 多 媒 体 视 频 会 议 系 统 中 了。

2. 基 于WWW 的 电 子 白 板 介 绍

---- Microsoft 的 视 频 会 议 软 件NetMeeting 提 供 了 电 子 白 板 功 能。 当 某 个 用 户 创 建 了 一 个 网 络 会 议 之 后, 该 会 议 中 的 任 何 一 个 用 户 都 可 以 运 行 白 板 部 件, 其 他 用 户 立 即 可 以 看 到 这 个 白 板, 所 有 的 用 户 都 可 以 在 白 板 上 自 由 书 写, 或 者 绘 制 图 形, 输 入 操 作 被 所 有 用 户 共 享。

---- NetMeeting 的 电 子 白 板 的 局 限 性 在 于 它 是 构 建 于NetMeeting 之 上 的, 不 能 作 为 分 立 的 部 件 被 其 他 应 用 程 序 使 用。 笔 者 在 开 发 一 个 基 于WWW 的 多 媒 体 应 用 系 统 时, 要 在 系 统 中 集 成 电 子 白 板 部 件, 但 是 系 统 中 不 包 括NetMeeting, 因 此, 考 虑 开 发 一 个 独 立 的 基 于WWW 的 电 子 白 板 部 件。 具 体 而 言, 就 是 每 个 客 户 端 使 用WEB 浏 览 器 与WEB 服 务 器 上 的 某 个 应 用 程 序 进 行 通 讯, 接 收 其 他 在 线 客 户 的 数 据, 在WEB 页 面 中 实 时 显 示。

3. 基 于WWW 的 电 子 白 板 的 设 计 与 实 现

---- 3.1 系 统 模 型

---- 电 子 白 板 由 服 务 器 端 和 客 户 端 两 部 分 组 成, 服 务 器 端 监 听 客 户 对 某 个 特 定 端 口 的 网 络 连 接 请 求, 并 与 之 建 立 连 接, 这 样, 这 个 客 户 的 数 据 就 可 以 发 送 到 服 务 器, 再 由 服 务 器 转 发 给 其 他 客 户。 客 户 端 的 任 务 是 将 用 户 的 输 入 数 据 发 送 给 服 务 器, 同 时 接 收 服 务 器 转 发 的 别 的 用 户 的 输 入 数 据。 也 就 是 说, 每 个 客 户 端 只 与 服 务 器 进 行 通 信, 并 不 直 接 与 其 他 客 户 建 立 连 接。 这 个 设 计 方 案 与 另 一 方 案, 即 在 客 户 端 之 间 直 接 建 立 网 络 连 接 相 比 较, 其 优 点 是 客 户 端 不 需 要 管 理 和 维 护 其 他 客 户 的 信 息, 系 统 结 构 更 清 晰 明 了, 系 统 效 率 也 更 高。


图 1 电 子 白 板 的 系 统 模 型

---- 电 子 白 板 的 系 统 模 型 如 图1 所 示, 客 户 端 运 行 时 将 立 即 向 服 务 器 的 某 个 端 口 发 送 连 接 请 求, 待 连 接 建 立 后 则 由 用 户 的 发 送 线 程 发 送 该 用 户 的 输 入 数 据 到 服 务 器。 服 务 器 端 的 主 线 程 负 责 监 听 某 个 端 口, 并 为 每 个 发 出 请 求 的 用 户 建 立 用 户 空 间 线 程, 这 个 线 程 负 责 接 收 记 录 用 户 的 信 息, 更 新 用 户 名 单 列 表, 接 收 用 户 的 发 送 线 程 发 出 的 数 据, 并 交 给 服 务 器 转 发 线 程 进 行 转 发。 服 务 器 转 发 线 程 根 据 用 户 名 单 列 表, 逐 一 发 送 转 发 数 据 到 每 个 用 户 的 接 收 线 程。 在 客 户 端, 用 户 接 收 线 程 接 收 服 务 器 转 发 的 数 据, 交 由 用 户 主 线 程 进 行 处 理 后 显 示。

---- 客 户 端 的 输 入 数 据 类 型 分 为 两 类: 文 本 和 图 形 对 象。 文 本 用 于 客 户 之 间 进 行 文 字 交 谈, 图 形 对 象 则 包 括 直 线、 矩 形、 圆、 自 由 画 线 以 及 橡 皮 擦 等。 每 一 种 数 据 类 型 都 被 定 义 为 相 应 的 类, 并 由 另 一 个 类 包 装 成 数 据 包 在 网 络 上 传 送, 这 个 类 还 要 在 客 户 端 解 包 数 据 包。 笔 者 以 自 由 画 线 为 例, 来 讨 论 系 统 实 现 的 几 个 问 题。

---- 3.2 编 程 语 言-Java

---- 在 编 程 语 言 的 选 择 上, 考 虑 到 电 子 白 板 系 统 具 有 如 下 特 点:

---- 因 而 决 定 选 用Java 语 言, 因 为Java 是 一 种 面 向 对 象 的 网 络 编 程 语 言, 它 支 持 多 线 程, 并 且,Java 的 平 台 无 关 性 以 及 安 全 性 更 是 其 他 编 程 语 言 无 法 比 拟 的。

---- 笔 者 选 择Borland Jbuilder 2 作 为 开 发 工 具, 使 用JDK1.1.5 进 行 开 发, 主 要 了 使 用 下 面 几 个 类:

---- 3.3 系 统 开 发 的 几 个 问 题

---- 在 服 务 器 端, 一 个Java 应 用 程 序 作 为 守 护 进 程 接 收 客 户 端 的 连 接 请 求, 客 户 端 即 运 行 在Web 页 面 中 的Java Applet, 如 图2 所 示, 左 侧 的 矩 形 区 域 用 来 接 收 本 地 客 户 的 鼠 标 绘 制 操 作 消 息, 并 显 示 其 他 在 线 客 户 的 绘 制 操 作, 右 侧 的 文 字 框 作 为 一 个 交 谈 区, 显 示 所 有 在 线 客 户 的 文 字 谈 话 内 容, 下 面 的 文 本 输 入 框 接 收 本 地 客 户 的 文 字 输 入。


图 2 电 子 白 板 客 户 端

---- 当 这 个Applet 初 始 化 并 运 行 时, 它 向 服 务 器 发 送 建 立Socket 连 接 的 请 求。 服 务 器 接 收 到 这 个 请 求, 检 验 该 用 户 的 合 法 性, 并 与 之 建 立 连 接, 随 之 客 户 就 可 以 使 用 鼠 标 绘 制 图 形, 或 者 在 文 本 输 入 框 中 输 入 文 字,Applet 将 把 鼠 标 消 息 或 者 输 入 的 文 字 包 装 成 特 定 的 数 据 包 发 送 给 服 务 器, 服 务 器 则 再 把 该 数 据 包 转 发 给 所 有 已 经 建 立 连 接 的 客 户。 在 服 务 器 端, 应 用 程 序 运 行 后 一 直 循 环 等 待 客 户 的 连 接 请 求, 其 界 面 如 图3 所 示, 所 有 在 线 客 户 的 网 络 地 址 将 被 显 示, 当 其 离 线 时, 该 客 户 将 被 自 动 删 除。


图 3 电 子 白 板 服 务 器

---- 这 里 有 以 下 几 个 问 题 需 要 特 别 说 明:

4. 结 束 语

---- 电 子 白 板 作 为 一 个 基 于WWW 的 可 视 化 数 据 共 享 方 案, 非 常 适 合 应 用 于 基 于WWW 的 交 互 系 统, 如 多 点 会 议 系 统, 网 络 教 学 系 统 等。 如 上 所 述, 笔 者 在 开 发 的 一 个 网 络 多 媒 体 教 学 系 统 时, 用Java 语 言 实 现 了 一 个 简 单 的 电 子 白 板 系 统。 更 加 完 善 的 电 子 白 板 系 统 还 应 具 有 窗 口 共 享、 远 程 指 示 标 共 享、 多 媒 体 数 据 共 享 等 功 能。 随 着 基 于WWW 的 网 络 交 互 系 统 的 不 断 涌 现, 电 子 白 板 技 术 的 研 究 将 更 加 深 入, 其 应 用 也 将 更 为 广 泛。

参 考 文 献

  1. Philip Heller, Simon Roberts,《Java 高 级 开 发 指 南》, 电 子 工 业 出 版 社,1998 年。
  2. Ralf Steimetz,Klara Nahrstedt,《Multimedia computing, communications and applications》, 清 华 大 学 出 版 社,1998 年。
  3. 《Computer Networks》,Andrew S. Tanenbaum, 清 华 大 学 出 版 社。

-