【VB开源代码栏目提醒】:本文主要为网学会员提供“代理服务器测试程序—毕业设计(论文) - 学士论文”,希望对需要代理服务器测试程序—毕业设计(论文) - 学士论文网友有所帮助,学习一下!
毕 业 设 计 论 文 代理服务器测试程序
论文作者请学位类别:指导教师姓名 : (职称)
论文提交日期: 代理服务器测试程序 摘 要 本
论文主要描述一个代理服务器测试程序,需要了解代理服务器的工作原理,在 Visual C 6.0 平台上开发一个基于对话框的 MFC 应用程序,此程序能够在短时间内验证一批具有特定格式的代理,并将他们按照速度快慢的顺序排列,使得用者能很方便的选择快速可用的代理去访问外网资源。
在程序的设计之中作者借鉴了成熟代理软件 ProxyFox 的一些设计理论。
为了让习惯操作 ProxyFox 的用者能够很好的使用 SuperProxy,设计了与 ProxyFox相似的界面,当然也在一定程度上使界面做得更为简洁、美观。
关键词:代理;服务器;测试 The Design and Implementation of Proxy Server Testing Program Abstract This thesis describes a proxy server testing program’s design and realization. Itis needed to master the theory of the Proxy server and realize it in Visual C 6.0development platform based on an MFC dialog application procedure. Thisprocedure can verify a number of specific format agents in a short time and orderthem according to the speed. Users can choose the quickest available agents to visitnetwork resources. In the design process the author drawes on the experience of mature softwareProxyFox to accommodate the operation habits of ProxyFox. ProxyFox is designedwith a similar interface but it is more concise and beautiful. Key
words: proxy server test 目 录
论文总页数:22 页1 引言..................................................................... 1 1.1 课题背景........................................................... 1 1.2 本课题研究的意义................................................... 1 1.3 本课题的研究方法................................................... 22 系统设计基础............................................................. 2 2.1 VC6.0 简介 ....................................................... 2 2.2 MFC 概述 ........................................................... 23 SuperProxy 简介 .......................................................... 3 3.1 系统开发环境....................................................... 3 3.2 SuperProxy 功能简述 ................................................ 34 SuperProxy 的设计 ........................................................ 4 4.1 SuperProxy 的界面设计 .............................................. 5 4.2 SuperProxy 功能模块设计阶段 ........................................ 5 4.3 SuperProxy 流程图 .................................................. 75 SuperProxy 具体编码实现 .................................................. 7 5.1 代理资源列表模块实现............................................... 7 5.2 代理验证模块实现................................................... 96 系统测试................................................................ 18结 论.................................................................... 19参考文献.................................................................... 20致 谢.................................................................... 21声 明.................................................................... 221 引言 1.1 课题背景 代理服务器英文全称是 Proxy Server,其功能就是代理网络用户去取得网络信息。
形象的说:它是网络信息的中转站。
在一般情况下,我们使用网络浏览器直接去连接其他 Internet 站点取得
网络信息时,须送出 Request 信号来得到回答,然后对方再把信息以 bit 方式传送回来。
代理服务器是介于浏览器和Web 服务器之间的一台服务器,有了它之后,浏览器不是直接到 Web 服务器去取回网页而是向代理服务器发出请求,Request 信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。
而且,大部分代理服务器都具有缓冲的功能,就好象一个大的 Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从 Web 服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。
它的工作主要在开放系统互联OSI模型的对话层。
主要的功能有: 1.突破自身 IP 访问限制,访问国外站点。
教育网、169 网等网络用户可以通过代理访问国外网站。
2.访问一些单位或团体内部资源,如某大学 FTP前提是该代理地址在该资源 的允许访问范围之内,使用教育网内地址段
免费代理服务器,就可以用于对教育 网开放的各类 FTP 下载上传,以及各类资料
查询共享等服务。
3.突破中国电信的 IP 封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同 Serve 对地址的封锁是不同的。
所以不能访问时可以换一个国外的代理服务器试试。
4.提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界 的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。
5.隐藏真实 IP:上网者也可以通过这种方法隐藏自己的 IP,免受攻击。
1.2 本课题研究的意义 在当前情况下,由于内网和网络或者是两个不同网络之间互访都有很大的速度瓶颈,就像校园网去访问电信网就慢的出奇,在这种情况下很多人都会采用代理上网以期得到可观的速度。
本课题就是针对这种情况,设计与实现一个代理服务器测试程序,SuperProxy极速代理是在 Visual C 6.0 平台上开发的一个基于对话框的 MFC 应用程序,此程序能够在短时间内验证特定格式的一批代理,并将他们按照速度快慢的顺序排列。
使得用者能很方便的选择快速可 第 1 页 共 22 页用的代理去访问外网资源。
1.3 本课题的研究方法 课题研究的步骤一般分为五个步骤:确定课题——拟定课题计划——写开题
报告——进行研究——结题。
首先根据自己的特点,选择适于自己的知识结构,自己感兴趣的课题。
在进行研究的同时,读书,查与此课题相关的资料,并收集相关问题和经验,为撰写
论文打好基础。
另外同课题教师,经常研究讨论,并归类整理自己遇到的问题,让自己不仅做好
设计,并牢牢掌握住需要用到的技术。
2 系统设计基础 2.1 VC6.0 简介 VC给人的第一感觉便是过于专业化,高深和晦涩。
其实也并非如此,在基本掌握了它之后你就会发现,VC使用起来是很方便的。
至于说难,那是有点。
但这并非是 VC的过错,而是 Windows,这个庞大无比对用户亲切之至却对程序员不那么友好的家伙。
再说,VC系出自名门,微软的哪样东西不是 先把你服侍得舒舒服服,然后再把你口袋中的钱掏个精光呢? VC是 Windows 平台上的 C编程环境,
学习 VC 要了解很多 Windows 平台的特性并且还要掌握 MFC、ATL、COM 等的知识,难度比较 大。
Windows 下编程 MFC需要了解 Windows 的消息机制以及回调callback函数的原理; 是 Win32API的包装类,需要理解
文档视 图类的结构,窗口类的结构,消息流向等等;COM是
代码共享的二进制标准,需要掌握其基本原理等等。
2.2 MFC 概述 MFC微软基础类Microsoft Foundation Classes,实际上是微软提供的用于在 C环境下编写应用程序的一个框架和引擎,VC是 WinOS 下开发人员使用的专业 C SDKSDKStandard SoftWare Develop Kit,专业软件开发平台。
MFC 就是挂在它之上的一个输助软件开发包,MFC 作为与 VC血肉相连的部分注意 C和 VC的区别:C是一种程序设计语言,是一种大家都承认的软件编制的通用规范,而 VC只是一个编译器,或者说是一种编译器源程序编辑器的 IDE,WS,PlatForm,这跟 Pascal 和 Dephi 的关系一个道理,Pascal 是Dephi 的语言基础,Dephi 使用 Pascal 规范来进行 Win 下应用程序的开发和编译,却不同于 Basic 语言和
VB 的关系,Basic 语言在
VB 开发出来被应用的年代已经成了 Basic 语言的新规范,
VB 新加的 Basic 语言要素,如面对对象
程序设计的要素,是一种性质上的飞跃,使
VB 既是一个 IDE,又成长成一个新的程序设计语言,MFC 同 BC集成的 VCL 一样是一个非外挂式的软件包类库,只不过 MFC 类是微软为 VC专配的。
第 2 页 共 22 页 MFC 是 Win API 与 C的结合,API即微软提供的 WinOS 下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方如我是一方,微软是一方,Borland 就是第三方的编程语言来进行对 Win OS 下应用程序的开发使这些被开发出来的应用程序能在 WinOS 下运行,比如 VBVC
JavaDehpi 编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在 WinOS 的消息机制和绘图里,遵守 WinOS 作为一个操作系统的内部实现这其实也是一种必要,微软如果不提供 API这个世上对 Win 编程的
工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到 MFC 是微软对 API 函数的专用 C封装,这种结合一方面让用户使用微软的专业 C SDK 来进行 Win 下应用程序的开发变得容易,因为 MFC是对 API 的封装。
微软做了大量的工作隐藏了好多内节程序开发人员在 Win 下用 C amp MFC 编制
软件时的大量内节如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价这是微软的一向作风。
因此就造成了 MFC 对类封装中的一定程度的的冗余和迂回但这是可以接受的。
3 SuperProxy 简介 3.1 系统开发环境系统软件环境: 操作系统:WindowsXP 程序语言:C 开发平台:Visual C 6.0 浏览器:Inertnet Explorer 6.0系统硬件环境: 处理器:AMD Sempron 2400 1.66GHz 内存:256MB 3.2 SuperProxy 功能简述 SuperProxy 是围绕着怎样验证代理服务器的可用性来展开设计与实现的,所以很明确的讲整个系统的主要功能为快速准确的验证一批代理,并按照一定的次序对验证结果进行排序,能够很明显的看出代理间的速度差异,另外会提供一些可以给大家带来方便的辅助功能。
以下对 SuperProxy 将要实现的功能做简要的描述: 1. 可以从.txt 格式的文件导入代理列表自动从文件中识别出代理,自动过滤掉空白或者无效格式代理。
2. 提供对代理列表的多种操作,如删除代理、添加代理、复制代理等。
3. 快速准确地验证所有代理,并自动按照速度的快慢排序,另外提供对 第 3 页 共 22 页单个代理和可选代理的验证。
4. 可以导出可用,可选代理到.txt 文件。
5. 可以选定某个代理设置为 IE 代理。
6. 提供一个代理资源列表,方便用户得到代理。
其中提供了对代理资源列表的一些相关操作,如添加、删除代理等。
7. 简单的代理验证设置。
SuperProxy 代理列表的导入 代理列表的操作 验证所有的代理 导出可用代理到文本
文档 IE 代理的设置 提供代理资源列表 代理验证的设置 图 1 SuperProxy 功能结构图4 SuperProxy 的设计 在选择了课题之后,就决定采用基于对话框的 MFC 程序来构造整个系统,主要原因是作者觉得比较适合这个
系统的设计,在开发上也容易上手,另外由于作者有用过诸如 ProxyFox、 ProxyThorn、ProxyHunter 这些代理测试软件,一直都对这类软件有种特殊的感觉,会想自己是否能够做出类似的的软件,选择这个课题也有一部分因素是因为这个。
使用这些软件也确实给 SuperProxy极速代理的设计与开发带来了很大的帮助。
尤其是最初的设计阶段,让作者对整个系统的设计有了宏观上的构思,在界面上也多少参考了 ProxyFox 的设计,当然不是纯粹的模仿,在一些方面也加入了作者自己的理解和构思,这在后面的比较上就可以看到。
SuperProxy 是决定要做成基于对话框的应用程序,所以作者在明确了系统需要做到的主要功能之后降开始对系统界面进行大致的制作,然后针对具体的功能需要以及界面操作开始进行实际的编码,在实际编码过程中也将对界面进 第 4 页 共 22 页行一定的改动。
4.1 SuperProxy 的界面设计 图 2 ProxyFox 主界面 图 3 SuperProxy 主界面 4.2 SuperProxy 功能模块设计阶段 在这个阶段里,主要是完成对整个系统的一个基础构建,包括划分模块, 第 5 页 共 22 页以及设想一下特定模块的实现概要,而不是考虑具体的实现细节,这会留在后面的编码实现阶段来完成。
整个系统从逻辑上看可以分为 3 个大部分从界面上也可以显然的看出来: 1. 代理服务器列表部分 2. 代理资源网列表部分 3. 验证代理列表功能部分 对于部分 1,主要是显示代理列表,右键出现上下文菜单,菜单中包括对代理列表的一些相关操作,如复制代理,删除代理选定为 IE 代理等。
对于复制代理来说,需要用到剪贴板的相关操作,而把选定的特定代理设为 IE 则会通过修改
注册表中对应的相关键值“ProxyEnable””ProxyServer”来完成。
对于部分 2,需要完成的功能从实质上是和 1相同,上下文菜单中同样会包括一些诸如添加资源,删除资源等的选项。
对于部分 3,这是整个系统的主要部分,也是系统的主要编码部分,在这里将要完成对这些功能实现的一些总体考虑,这在以后的实际编码过程中有着至关重要的作用,下面就是一些我们需要在编码之前做的一些工作: 1 针对代理
列表的导入和导出,需要定义代理的数据结构,已经存储代理的文件格式。
在系统里将会用可编辑的.txt 文件来保存代理,对于单个代理来说在.txt 文件中独行存储且具有特定的格式: 代理地址:端口号@HTTP描述一般是代理的归属地 168.143.113.12:80US 62.190.127.113:3128Great Britain UK 210.177.254.13:3128HK 210.0.209.148:80HK 210.0.201.33:3128HK 210.0.200.14:80HK 2 针对代理资源列表的加载,我们同样需要规定代理资源的格式
问题首先确定代理资源网站的格式为: 网站名称-网站地址_网站描述 例:代理中国-http://www.proxycn.com/_代理中国ProxyCN.COM 但这里我们希望从特定的路径加载资源,并把增加或者删除资源都具体反应到这个特定路径的特定名字的资源文件中,而不是单纯的反应到界面列表之中。
这样我们在下次程序启动之后才能保证我们删除的代理资源已经不在资源列表中,也同样看到我们上次增加的资源。
第 6 页 共 22 页 3 针对代理的验证问题,这将是整个系统的关键部分也将是整个系统设计的难点部分,因为要验证一定数目的代理,需要用到多线程,这将通过 MFC 中的 WinThread 类来实现,另外需要连接 Internet,将用 Winnet 类完成具体的实现细节,其中也将会用到自定义消息来完成一些相关操作。
4.3 SuperProxy 流程图 导入代理列表 操作代理列表 开始验证代理 代理验证结束 操作代理列表 导出可用代理 图 4 SuperProxy 系统流程图5 SuperProxy 具体编码实现 5.1 代理资源列表模块实现 这里列出这样一个函数,完成代理资源列表的加载。
主要实现思想为在程序运行目录下寻找存在代理资源网站的.txt 文件wresourse.txt , 如 果 存 在 则 把 其 中 的 代 理 资 源 加 载 入 代 理 资 源 列 表m_listProxyWeb 中。
如果不存在则把默认的站点: 代理中国-http://www.proxycn.com/_代理中国ProxyCN.COM加载入列表。
BOOL CSuperProxyDlg::LoadResourseListFile //加载资源文件quotwresourse.txtquot中内容到资源列表中 CStdioFile file 第 7 页 共 22 页CString sLinesFileNamesFileName quotwresourse.txtquot//LPCTSTR lpszFile LPCTSTRsFileNameCString sName sAddress sDescriptionINT nFindiffile.OpensFileName CFile::modeRead m_listProxyWeb.InsertItem0quot代理中国quot m_listProxyWeb.SetItemText01quothttp://www.proxycn.com/quot m_listProxyWeb.SetItemText02quot代理中国ProxyCN.COMquot return FALSEelse whilefile.ReadStringsLine //寻找资源的描述信息 nFind sLine.Find_Tquot_quot ifnFind gt 0 sDescription sLine.RightsLine.GetLength - nFind - 1 sLine sLine.LeftnFind // 寻找资源的地址信息 nFind sLine.Find_Tquot-quot ifnFind gt 0 sAddress sLine.RightsLine.GetLength - nFind - 1 sName sLine.LeftnFind m_listProxyWeb.InsertItem0sName m_listProxyWeb.SetItemText01sAddress m_listProxyWeb.SetItemText02sDescription 第 8 页 共 22 页 return TRUE 5.2 代理验证模块实现 主要运用 CWinInet 类来实现。
实现原理为:开启多个线程,让每一个线程通过列表中的代理去连接某个特定网站如 www.yahoo.com,下载它的页面存与某个字符串中,记录下整个过程的时间,然后在这个字符串中寻找特定字符串如”My Yahoo”,存在则说明代理可用,如果不存在或者说在用代理去连接网站的时候出现异常,不能连接或者连接超时则说明不可用,下面按照程序的流程来描述这段
代码: 1. 判断列表中是否有代理,没有代理则不需要验证。
INT nItemCount m_listProxy.GetItemCount ifnItemCount lt 0 // 没有什么来验证的 return 2. 验证前界面调整,主要是设置各个按钮的状态,使用户在验证过程中除了操作停止按钮之外,不能操作其他的控件。
PreVerify 3. 根据代理列表中的代理个数以及验证设置对话框中的设置来创建需要的线程并设置各个线程的参数。
如果没有设置验证参数,则默认开启 30 个线程,使用默认站点 www.yahoo.com 和默认字符串 My Yahoo!来验证代理。
INT nRunCount nItemCount ifnRunCount gt m_nThreadsCanRun nRunCount m_nThreadsCanRun // // 创建线程 INT i fori0 iltnRunCount i g_apThreadi new CProxyVerifyThread ifg_apThreadi NULL // 如果创建失败 .