首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - Visual C++ 阅读:4981   评论: 0    参与评论
标题   Internet 服 务 端 口 测 试 程 序 的 设 计 与 实 现     选择自 ghj1976 的 Blog
关键字   Internet 服 务 端 口 测 试 程 序 的 设 计 与 实 现
出处   http://www.starinfo.net.cn/computer/980907_02.html

 

 

Internet 服 务 端 口 测 试 程 序 的 设 计 与 实 现

 


----

程 序 的 实 用 背 景

---- 当 前, 上 网 的 朋 友 越 来 越 多, 遇 到 的 问 题 也 越 来 越 多, 最 常 见 的 就 是 关 于 域 名 服 务 器(DNS)、 邮 件 服 务(SMTP) 和POP3 等 服 务 器 的 配 置 问 题。 例 如, 选 用 哪 一 个DNS,202.96.0.133 还 是202.96.26.243 ? 记 不 清ISP 的 邮 件 服 务 器 和 域 名 服 务 器 的IP 地 址,202.96.26.243 还 是202.96.26.245? 另 外 一 个 问 题 是, 我 们 在 下 载 文 件 的 时 候, 往 往 面 临 从 多 个 不 同 主 机 下 载 的 选 择( 像sunsite 有 数 十 个 镜 像 站 点)。 那 么, 选 择 哪 一 个 站 点 进 行 下 载 是 最 快 的 呢? 笔 者 为 此 编 写 了 一 个 应 用 程 序, 试 图 对Internet 常 用 的 网 络 通 信 端 口( 如Web、Email、FTP 等) 进 行 连 接 测 试, 获 得 服 务 端 口 的 状 态 和 响 应 时 间 指 标, 从 而 为 更 有 效 地 使 用Internet 提 供 准 确 的 参 考 数 据。 笔 者 为 该 程 序 命 名 为Tester( 测 试 者), 从 后 面 叙 述 不 难 发 现,Tester 还 可 以 作 为 简 单 的Internet 系 统 性 能 测 试 工 具 来 使 用。

---- 虽 然Tester 也 涉 及 了 其 它 的 编 程 方 法, 但 就 总 体 而 言,Tester 属 于Socket 应 用 程 序。 所 以 我 们 先 从Socket 编 程 的 模 型 入 手, 介 绍Tester 程 序 的 设 计 与 实 现。

Socket 编 程 模 型

---- Socket( 套 接 字) 是 网 络 通 信 的 一 个 端 点。 我 们 知 道, 网 络 通 信 通 常 指 两 台 主 机 或 两 个 进 程, 通 过 网 络 传 递 它 们 之 间 的 数 据, 这 样 的 过 程 可 以 理 解 为 网 络 的 一 次 对 话(Session)。 网 络 对 话 的 每 一 端 就 成 为 网 络 通 信 的 端 点, 即 网 络 通 信 实 体 的 最 小 单 位。 当 使 用Socket 接 口 对 网 络 通 信 编 程 时,Socket 是 网 络 通 信 过 程 中 端 点 的 抽 象 表 示。 大 多 数 网 络 通 信 采 用 客 户 / 服 务 器 模 型, 客 户 / 服 务 器 模 型 按 照 端 点 的 工 作 性 质 来 区 分 通 信 双 方 的 端 点。 例 如, 客 户 / 服 务 器 模 型 将 启 动 网 络 服 务 请 求 的 端 点 视 作 客 户 进 程 或 客 户 程 序; 对 客 户 请 求 作 出 响 应 的 端 点 是 服 务 器 进 程 或 服 务 器 程 序。

---- 为 了 进 行 网 络 通 信, 程 序 在 网 络 对 话 的 每 一 端 都 需 要 一 个Socket, 即 客 户 端Socket 和 服 务 器 端Socket。 两 个Socket 之 间 的 连 接 可 以 是 面 向 连 接 的 也 可 以 是 无 连 接 的。 虽 然 从 目 前 看,Socket 编 程 已 经 不 再 局 限 于UNIX 系 统, 但 是Socket 接 口 在 网 络 通 信 时 仍 然 使 用UNIX 系 统I /O 概 念,Socket 接 口 模 型 仍 然 采 用Open Read Write Close 方 式。

---- Socket 编 程 的 包 括 以 下 几 个 主 要 步 骤: 建 立Socket → 配 置Socket → 通 过Socket 发 送 数 据 → 通 过Socket 接 收 数 据 → 关 闭Socket。

CSocket 编 程 模 型

---- 对 于 网 络 通 信 编 程 的 初 学 者 来 说, 直 接 使 用 上 述Socket 模 型 会 感 觉 困 难 和 复 杂。Visual C + + 的MFC( 基 础 类 库) 提 供 了 一 些 封 装 好 的 对 象, 这 些 对 象 的 概 念 相 对 简 单, 编 程 相 对 容 易。Tester 程 序 就 是 使 用MFC 中 的 几 个 与Socket 相 关 的 类 来 实 现 的。

---- 在 服 务 器Socket 和 客 户Socket 之 间 建 立 通 信 的 过 程 如 下。 1. 创 建CSocket 对 象。

---- 2. 使 用 该 对 象 产 生Socket 句 柄。

---- 3. 如 果Socket 是 客 户, 调 用CAsyncSocket::Connect, 连 接 本 地 的Socket 和 服 务 器Socket。

---- 如 果Socket 是 服 务 器, 调 用CAsyncSocket::Listen, 开 始 侦 听 从 客 户 端 来 的 访 问 请 求, 如 果 收 到 请 求, 调 用CAsyncSocket::Accept 进 行 接 收 处 理。

---- 4. 建 立CSocketFile 对 象, 并 且 使 该 对 象 与CSocket 对 象 具 备 一 定 的 联 系。

---- 5. 建 立CArchive 对 象, 以 便 实 现 卸 装( 接 收) 数 据 和 存 储( 发 送) 数 据 的 目 的 地 址。 当 然, 该CArchive 对 象 应 该 与 前 面 的CSocketFile 对 象 建 立 联 系。

---- 6. 使 用CArchive 对 象 在 客 户 和 服 务 器Socket 之 间 传 递 数 据, 从 而 实 现 服 务 器Socket 和 客 户 机Socket 之 间 的 通 信。 值 得 注 意 的 是, 一 个 给 定 的CArchive 对 象 只 能 在 单 一 的 方 向 上 传 递 数 据: 或 者 接 收 或 者 发 送。 一 般 情 况 下, 可 能 需 要 两 个CArchive 对 象 来 实 现 数 据 的 双 向 传 递。

---- 7. 解 析archive、Socket file、Socket 对 象。

---- 上 述 内 容 图 示 如 下:


Client Server

程 序 的 实 现

---- 简 单 地 讲, 对 于 程 序 的 实 现, 笔 者 主 要 考 虑 了 三 部 分 的 内 容:Socket、 时 钟 以 及 界 面。

---- 1.Socket( 网 络 通 信 实 体)

---- Tester 作 为 一 个 客 户 端 的Socket 通 信 程 序, 包 括TestSocket(CSocket 派 生 类)、TestSocketFile(CSocketFile 派 生 类) 和TestArchiveIn、TestArchiveOut(CArchive 派 生 类) 等。 这 些 对 象 的 建 立 和 使 用 与 上 述CSocket 编 程 模 型 相 同。

---- 2. 时 钟( 用 于 测 试 网 络 上Internet 服 务 端 口 的 响 应 时 间)

---- Tester 在Socket 连 接 建 立 的 前 后 分 别 调 用clock 系 统 函 数, 从 而 可 以 利 用 二 者 的 相 对 差 别 获 得 绝 对 时 间 参 数。clock 函 数 可 以 获 得 某 一 系 统 调 用 过 程 所 耗 费 的 时 间, 其 返 回 值 是 处 理 器 的 计 时 单 位 次 数。Tester 的 时 间 单 位 是 毫 秒。

---- .... / / 其 它 代 码

---- clock-t start=clock();

---- if(m-pSocket ->Connect(lpszAddress,nPort))

---- {

-------- clock-t end=clock();

-------- … … / / 其 它 代 码

---- }

---- else

---- {

-------- clock-t end=clock();

-------- … … / / 其 它 代 码

---- }

---- … … / / 其 它 代 码

---- 从 程 序 中 可 以 看 出,Tester 记 录 的 响 应 时 间, 是 指 处 理 器 在 整 个 网 络 通 信 的 连 接 建 立 过 程 中 的 响 应 时 间。 这 一 结 果 和 网 络 状 况、 服 务 器 端 的 响 应 时 间、 本 地 系 统 的 性 能 均 有 关 系。 实 际 上, 网 络 用 户 在 实 际 应 用 过 程 中 真 正 的 时 间 延 迟, 就 是 上 述 各 个 因 素 的 总 和。 另 外,Tester 的 响 应 时 间 结 果 是10 次 测 试 的 平 均 数。 所 以,Tester 测 试 的 是 整 个 网 络 应 用 的 响 应 时 间, 是 综 合 的 指 标。

---- 3. 界 面( 与 程 序 使 用 者 进 行 交 互, 指 令 的 输 入 和 结 果 的 输 出)

---- (1) 输 入 部 分

---- Tester 使 用 了 对 话 框 对 象:SetupDlg::CDialog, 在 对 话 框 中, 使 用Check、Edit 等 控 制 件, 并 且 通 过 这 些 控 制 向 程 序 传 递 使 用 者 所 指 示 的 测 试 信 息。

---- (2) 输 出 部 分

---- Tester 是 单 文 档 界 面(SDI) 的 应 用 程 序。 窗 口 风 格 见 下 面 程 序 段:

---- … … / / 其 它 代 码

---- ---- CEditView::PreCreateWindow(cs);

--------cs.style=AFX-WS-DEFAULT-VIEW|WS-VSCROLL|
ES-AUTOHSCROLL|ES-AUTOVSCROLL|ES-MULTILINE|ES-NOHIDESEL|ES-READONLY;

---- … … / / 其 它 代 码

---- 利 用Tester 的 菜 单 功 能 可 以 把 每 次 测 试 结 果 存 为 纯 文 本 格 式 的 文 件。


输 入 指 令 对 话 框

程 序 应 用 举 例

---- Tester 对 于 熟 悉Internet 应 用 的 使 用 者 来 说, 界 面 一 目 了 然, 操 作 十 分 简 单。 首 先, 使 用 者 根 据 测 试 需 要 填 写 参 数 设 置 对 话 框; 确 认 后, 由Tester 程 序 自 动 执 行 测 试 工 作, 并 将 测 试 结 果 显 示 于Tester 窗 口 中。 同 时, 用 户 也 可 以 将 测 试 结 果 存 为 文 本 文 件。

---- Tester 的 用 户 可 以 自 定 义 一 些 服 务 端 口 进 行 测 试( 例 如, 对 话 框 中 没 有 列 出 的Gopher 等Internet 服 务)。 当 然, 在 这 种 情 况 下, 用 户 必 须 知 道 被 测 试 的 服 务 的Socket 端 口 号。 下 面 给 出 几 个 测 试 结 果 文 件, 仅 供 参 考( 笔 者 经 由2631 拨 号 上 网 进 行 测 试)。

---- 下 面 给 出 几 个 测 试 结 果 文 件,仅 供 参 考(笔 者 经 由2631 拨 号 上 网 进 行 测 试 )。

     被测主机:163.net

     测试时间:10:37, June 09, 1998



    Internet服务             状态                 响应时间(ms)

    --------------------------------------------------------------

     FTP                         OFF                   

     SMTP                      ON                    2030

     DNS                        OFF                   

     POP3                      ON                    1050

     HTTP                      ON                    380



     被测主机:ihw.com.cn

     测试时间:10:38, June 09, 1998



    Internet服务             状态                 响应时间(ms)

    --------------------------------------------------------------

     FTP                         OFF                   

     SMTP                     ON                     3670

     POP3                      ON                     720

     HTTP                      OFF                   



     被测主机:www.yahoo.com

     测试时间:10:38, June 09, 1998



    Internet服务             状态                 响应时间(ms)

    --------------------------------------------------------------

     FTP                         OFF                   

     TELNET                 OFF                   

     SMTP                      OFF                   

     DNS                        OFF                   

     POP3                      OFF                   

     HTTP                      ON                    1700





     被测主机:www.microsoft.com

     测试时间:10:39, June 09, 1998



    Internet服务             状态                 响应时间(ms)

    --------------------------------------------------------------

     FTP                         OFF                   

     TELNET                 OFF                   

     SMTP                      OFF                   

     DNS                        OFF                   

     POP3                      OFF                   

     HTTP                      ON                    930



     被测主机:www.asia.microsoft.com

     测试时间:10:39, June 09, 1998



    Internet服务             状态                 响应时间(ms)

    --------------------------------------------------------------

     HTTP                      ON                     650

----


 


相关文章
对该文的评论