Internet处事端口测试措施的设计与实现
当前位置:以往代写 > C/C++ 教程 >Internet处事端口测试措施的设计与实现
2019-06-13

Internet处事端口测试措施的设计与实现

Internet处事端口测试措施的设计与实现

副标题#e#

一、措施的实用配景

上网的伴侣越来越多,碰着的问题也越来越多,最常见的就是关于域名处事器(DNS)、邮件处事(SMTP)和POP3的设置问题。譬喻,选用哪一个DNS,202.96.0.133照旧202.96.26.243?记不清ISP的邮件处事器和域名处事器的IP地点,202.96.26.243照旧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编程的包罗几个主要步调:

1、成立Socket;

2、设置Socket;

3、通过Socket发送数据;

4、通过Socket吸收数据;

5、封锁Socket。

三、CSocket编程模子

对付网络通信编程的初学者来说,直接利用上述的socket模子会感受坚苦和巨大。VisualC++的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、socketfile、socket工具。


#p#副标题#e#

四、措施的实现

简朴地讲,对付措施的实现,笔者主要思量了三部门的内容:Socket、时钟以及界面。

Socket(网络通信实体)

Tester作为一个客户端的socket通信措施,包罗TestSocket(Csocket派生类)、TestSocketFile(CSocketFile派生类)和TestArchiveIn、TestArchiveOut(CArchive派生类)等。这些工具的成立和利用与上述的CSocket编程模子沟通。

时钟(用于测试网络上Internet处事端口的响应时间)

Tester在Socket毗连成立的前后别离挪用clock系统函数,从而可以操作二者的相对不同得到绝对时间参数。clock函数可以得到某一系统挪用进程所淹灭的时间。clock函数的返回值是处理惩罚器的计时单元次数。Tester的时间单元是毫秒。

…… //其它代码

clock_tstart=clock();
if(m_pSocket->Connect(lpszAddress,nPort))
{
clock_tend=clock();
...... //其它代码
}
else
{
clock_tend=clock();
...... //其它代码
}

…… //其它措施段

#p#分页标题#e#

从措施中可以看出,Tester记录的响应时间,是指处理惩罚器在整个网络通信的毗连成立进程中的响应时间。这一功效和网络状况、处事器端的响应时间、当地系统的机能均有干系。实际上,网络用户在实际应用进程中真正的时间延迟,就是上述各个因素的总和。别的,Tester的响应时间功效是10次测试的平均数。所以,Tester测试的是整个网络应用的响应时间,是综合的指标。

界面(与措施利用者举办交互,指令的输入和功效的输出)

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的菜单成果可以把每次的测试功效存为纯文本名目标文件。

#p#副标题#e#

五、措施的应用举例

Tester对付熟悉Internet应用的利用者来说,界面一目了然,操纵十分简朴。首先,利用者按照测试需要填写参数配置对话框;确认后,由Tester措施自动执行测试事情,并将测试功效显示于Tester窗口中。同时,用户也可以将测试功效存为文本文件。

Tester的用户可以自界说一些处事端口举办测试(譬喻,对话框中没有列出的Gopher等Internet处事)。虽然,在这种环境下,用户必需知道被测试的处事的Socket端标语。

下面给出几个测试功效文件,仅供参考(笔者经过2631拨号上网举办测试)。

被测主机:163.net

测试时间:10:37,June09,1998

Internet处事状态响应时间(ms)

FTPOFF

SMTPON2030

DNSOFF

POP3ON1050

HTTPON380

被测主机:ihw.com.cn

测试时间:10:38,June09,1998

Internet处事状态响应时间(ms)

FTPOFF

SMTPON3670

POP3ON720

HTTPOFF

被测主机:www.yahoo.com

测试时间:10:38,June09,1998

Internet处事状态响应时间(ms)

FTPOFF

TELNETOFF

SMTPOFF

DNSOFF

POP3OFF

HTTPON1700

被测主机:www.microsoft.com

测试时间:10:39,June09,1998

Internet处事状态响应时间(ms)

FTPOFF

TELNETOFF

SMTPOFF

DNSOFF

POP3OFF

HTTPON930

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

测试时间:10:39,June09,1998

Internet处事状态响应时间(ms)

HTTPON650

    关键字:

在线提交作业