ImageVerifierCode 换一换
格式:DOC , 页数:54 ,大小:868.54KB ,
资源ID:2727304      下载积分:14 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2727304.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(FTP服务与客户端设计毕业设计论文模板.doc)为本站上传会员【a199****6536】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

FTP服务与客户端设计毕业设计论文模板.doc

1、FTP服务和用户端设计 摘要 FTP为一个主流网络文件传输协议。设计和实现FTP服务和用户端,有利于深入了解网络编程和FTP协议,使理论知识和实践结合起来。本文采取VC++6.0编程工具设计和实现了FTP服务和用户端设计。其关键设计工作为:服务器端设计和用户端设计。服务器端设计模块关键有:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。用户端设计模块关键有:连接服务器模块,上传文件模块,下载文件模块。经过实际测试和应用,验证了本文设计正确性。 关键词 FTP 服务器 用户端 VC++6.0 The design of FTP Server and Client

2、 Abstract FTP is a mainstream network file transfer protocol. Design and Implementation of FTP services and clients will help in-depth understanding of network programming and FTP, and make the theoretical knowledge and practice together. In this paper, using VC + +6.0 programming tool, the FTP s

3、erver and client designe are designed and implemented. The main design work is for: the design of server and client . Server-side design modules are: server logs module, online modules, procedures set module, statistics module, the security module. lient design modules are: connect to server module

4、 upload module, download files module. Through practical application and testing ,it verifys the correctness of the design of the paper. Keywords FTP Sever Client VC++6.0 目 录 第1章 绪论 2 1.1 FTP介绍 3 1.2 VC++6.0介绍 6 1.3 本文工作内容 8 第2章 系统整体设计 9 2.1 FTP服务器整体设计 9 2.2 FTP用户端整体设计 1

5、0 第3章 FTP服务器模块设计 11 3.1服务器日志模块 11 3.2 在线用户模块 16 3.3 程序设置模块 19 3.4 统计模块 22 3.5 安全模块 25 第4章 FTP用户端模块设计 33 4.1连接服务器模块 33 4.2 下载文件模块 35 4.3 上传文件模块 40 第5章 结论和展望 44 致 谢 45 参考文件 46 第1章 绪论 1.1 FTP介绍 FTP关键作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到当地计算机,或把当地计算机文件送

6、到远程计算机去。 以hDz9wb-[ i(l*R中国Web技术站N GEHv /X1fG4ma8S(l7^4L@@Nvh ?以下传文件为例,当开启FTP从远程计算机拷贝文件时,实际上开启了两个程序:一个当地机上FTP用户程序:它向FTP服务器提出拷贝文件请求。 另一个是开启在远程计算机上FTP服务器程序,它响应请求把指定文件传送到计算机中。FTP采取“用户机/服务器”方法,用户端要在自己当地计算机上安装FTP用户程序。FTP用户程序有字符界面和图形界面两种。字符界面FTP命令复杂、繁多。图形界面FTP用户程序,操作上要简练方便多。简单地说,支持FTP协议服务器就是

7、FTP服务器。 通常来说,用户联网首要目标就是实现信息共享,文件传输是信息共享很关键一个内容之一。Internet上早期实现传输文件,并不是一件轻易事, 我们知道 Internet是一个很复杂计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上计算机已经有上千万台,而这些计算 机可能运行不一样操作系统, 有运行Unix服务器,也有运行Dos、WindowsPC机和运行MacOS苹果机等等,而多种操作系统之间文件交流问题,需要建立一个统一 文件传输协议,这就是所谓FTP。基于不一样操作系统有不一样FTP应用程序,而全部这些应用程序全部遵守同一个协议,这么用户就能够

8、把自己文件传送给 她人,或从其它用户环境中取得文件。中国Web技术站| M�Z5g0mq-|\G$@ 和大多数Internet服务一样,FTP也是一个用户机/服务器系统。用户经过一个支持FTP协议用户机程序,连接到在远程主机上FTP服务器程 序。用户经过用户机程序向服务器程序发出命令,服务器程序实施用户所发出命令,并将实施结果返回到用户机。比如说,用户发出一条命令,要求服务器向用 户传送某一个文件一份拷贝,服务器会响应这条命令,将指定文件送至用户机器上。用户机程序代表用户接收到这个文件,将其存放在用户目录中。中国Web技术站b:\ Qq5xu;m:c        在FTP使

9、用当中,用户常常碰到两个概念:"下载"(Download)和"上载"(Upload)。"下载"文件就是从远程主机拷贝文件至自己计算机上;"上载"文件就是将文件从自己计算机中拷贝至远程主机上。用Internet语言来说,用户可经过用户机程序向(从)远程主机上载(下载)文件。中国Web技术站'ew'rF/E`$DA.v        使用FTP时必需首先登录,在远程主机上取得对应权限以后,方可上载或下载文件。也就是说,要想同哪一台计算机传送文件,就必需含有哪一台计算机合适 授权。换言之,除非有用户ID和口令,不然便无法传送文件。这种情况违反了Internet开放性,Internet上FTP

10、主机何止千万,不可能要 求每个用户在每一台主机上全部拥有帐号。匿名FTP就是为处理这个问题而产生。 0P#YK)Z.@8N4G,?�M U%j        匿名FTP是这么一个机制,用户可经过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊用户ID,名为anonymous, Internet上任何人在任何地方全部可使用该用户ID。中国Web技术站2v1n)En(o!Iw&w7G$F        经过FTP程序连接匿名FTP主机方法同连接一般FTP主机方法差不多,只是在要求提供用户标识ID时必需输入anonymous,该用户ID口令 能够是任意字符串

11、习惯上,用自己E-mail地址作为口令,使系统维护程序能够统计下来谁在存取这些文件。 zk�h*a*J8R/E-O       值得注意是,匿名FTP不适适用于全部Internet主机,它只适适用于那些提供了这项服务主机。当远程主机提供匿名FTP服务时,会指定一些目录向公 众开放,许可匿名存取。系统中其它目录则处于隐匿状态。作为一个安全方法,大多数匿名FTP主机全部许可用户从其下载文件,而不许可用户向其上载文件,也 就是说,用户可将匿名FTP主机上全部文件全部拷贝到自己机器上,但不能将自己机器上任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机 确实许可用户上载文件,用户也只能

12、将文件上载至某一指定上载目录中。随即,系统管理员会去检验这些文件,她会将这些文件移至另一个公共下载目录中,供其它 用户下载,利用这种方法,远程主机用户得到了保护,避免了有些人上载有问题文件,如带病毒文件。中国Web技术站F:jm dD&V        作为一个Internet用户,可经过FTP在任何两台Internet主机之间拷贝文件。不过,实际上大多数人只有一个Internet帐户,FTP主 要用于下载公共文件,比如共享软件、各企业技术支持文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清文件,供用户无偿拷贝。实际上,几乎全部类型信息,全部类型计算机程序

13、全部可 以在Internet上找到。这是Internet吸引我们关键原因之一。匿名FTP使用户有机会存取到世界上最大信息库,这个信息库是日积月累起来 ,而且还在不停增加,永不关闭,包含到几乎全部专题。而且,这一切是无偿。中国Web技术站1f6Q\a-h        匿名FTP是Internet网上公布软件常见方法。Internet之所以能延续到今天,是因为大家使用经过标准协议提供标准服务程序。像这么程 序,有很多就是经过匿名FTP公布,任何人全部能够存取它们。Internet中有数目巨大匿名FTP主机和更多文件,那么到底怎样才能知道某一 特定文件在哪个匿名FTP主机上那个目录中呢?这正

14、是Archie服务器所要完成工作。Archie将自动在FTP主机中进行搜索,结构一个包含全部文件目录信息数据库,使你能够直接找到所需文件位置信息。 其支持两种模式,一个方法叫做Standard (也就是 Active,主动方法),一个是 Passive (也就是PASV,被动方法)。 Standard模式 FTP用户端发送 PORT 命令到FTPserver。Passive模式FTP用户端发送 PASV命令到 FTP Server。 Standard模式FTP 用户端首先和FTP ServerTCP 21端口建立连接,经过这个通道发送命令,用户端需要接收数据时候在这个通道上发送PORT命令

15、 PORT命令包含了用户端用什么端口接收数据。在传送数据时候,服务器端经过自己TCP 20端口发送数据。 FTP server必需和用户端建立一个新连接用来传送数据。 Passive模式在建立控制通道时候和Standard模式类似,当用户端经过这个通道发送PASV 命令时候,FTP server打开一个在1024和5000之间随机端口而且通知用户端在这个端口上传送数据请求,然后FTP server 将经过这个端口进行数据传送,这个时候FTP server不再需要建立一个新和用户端之间连接。 现在FTP软件里面包含在IE5以上版本里面也已经支持这两种模式了。通常部分FTP用户端软件就比很好

16、设置了,通常全部有一个PASV选项,比如 CuteFTP,传输方法全部有Standard和PASV选项,能够自己进行选择;另外在IE里面假如要设置成PASV模式话能够选中工具- Internet选项-高级-为FTP站点启用文件夹视图,不然就采取Standard模式。 1.2 VC++6.0介绍 本课题设计采取Microsoft Visual C++6.0作为开发工具。Visual c++是开发Windows应用程序主流开发工具,能够利用资源多。Visual C++ 不仅仅是一个编译器。它是一个全方面应用程序开发环境,使用它你充足利用含有面向对象特征 C++ 来开发出专业级 Windows

17、应用程序。Visual  C++作为一个程序设计语言,它同时也是一个集成开发工具,提供了软件代码自动生成和可视化资源编辑功效。在使用Visual  C++开发应用程序过程中,系统为我们生成了大量多种类型文件。  Visual C++采取框架是MFC。MFC不仅仅是大家通常了解一个类库。你假如选择了MFC,也就选择了一个程序结构,一个编程风格。MFC 是一个很大、扩展了 C++ 类层次结构,它能使开发 Windows 应用程序变得愈加轻易。MFC 是在整个 Windows 家族中全部是兼容,也就是说,不管是 Windows3.x、Windows95 还是 Windows NT,所使用 MFC

18、是兼容。每当新 Windows 版本出现时,MFC 也会得到修改方便使旧编译器和代码能在新系统中工作。MFC 也回得到扩展,添加新特征、变得愈加轻易建立应用程序。 使用 MFC 最大优点是它为你做了全部最难做事。MFC 中包含了上成千上万行正确、优化和功效强大 Windows 代码。你所调用很多组员函数完成了你自己可能极难完成工作。从这点上将,MFC 极大地加紧了你程序开发速度。 因为MFC编程方法充足利用了面向对象技术优点,它使得我们编程时极少需要关心对象方法实现细节,同时类库中多种对象强大功效足以完成我们程序中绝大部分所需功效,这使得应用程序中程序员所需要编写代码大为降低,有力地确保了程

19、序良好可调试性。最关键是MFC类库在提供对象多种属性和方法全部是经过谨慎编写和严格测试,可靠性很高,这就确保了使用MFC类库不会影响程序可靠性和正确性。 MFC常见类有: 1).CWnd:窗口,它是大多数“看得见东西”父类(Windows里几乎全部看得见东西全部是一个窗口,大窗口里有很多小窗口),比如视图CView、 框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生 。该类很大,一开始也无须学,知道就行了。 2).CDocument文档,负责内存数据和磁盘交互。最关键是OnOpenDo

20、cument(读入),OnSaveDocument(写盘),Serialize(读写)。 3).CView视图,负责内存数据和用户交互。包含数据显示、用户操作响应(如菜单选择、鼠标响应)。最关键是OnDraw(重画窗 口),通常见CWnd::Invalidate()来开启它。另外,它经过消息映射表处理菜单、工具条、快捷键和其它用户消息。你自己很多功效全部要加在 里面,你打交道最多就是它。 4).CDC设备文本。不管是显示器还是打印机,全部是画图给用户看。这图就抽象为CDC。CDC和其它GDI(图形设备接口)一起,完成文字和图形、图 像显示工作。把CDC想象成一张纸,每个窗口全

21、部有一个CDC相联络,负责画窗口。CDC有个常见子类CClientDC(窗口用户区),画图通常经过 CClientDC完成。 5).CDialog对话框。 6).CWinApp应用程序类。似于C中main函数,是程序实施入口和管理者,负责程序建立、消亡,主窗口和文档模板建立。最常见函数InitInstance():初始化。 7).CGdiObject及子类,用于向设备文本画图。它们全部需要在使用前选进DC。 8).CPen笔,画线。 9).CBrush刷子,填充。 10).CFont字体,控制文字输出字体。 11).CBitm

22、ap位图。 12).CPalette调色板 。 13).CRgn区域,指定一块区域能够用于做特殊处理。 14).CFile文件。最关键不外是Open(打开),Read(读入),Write(写)。 15).CString字符串。封装了C中字符数组,很实用。 16).CPoint点,就是(x,y)对。 17).CRect矩形,就是(left,top,right,bottom)。 18).CSize大小,就是(cx,cy)对(宽、高)。 1.3 本文工作内容 本文关键工作为FTP服务器和用户端设计。其关键设计内容有: (1)服务器设计

23、 ● 服务器日志模块。 ● 在线用户模块。 ● 程序设置模块 。 ● 统计模块。 ● 安全模块。 (2)用户端设计: ● 连接服务器模块。 ● 上传文件模块。 ● 下载文件模块。 第2章 系统整体设计 本系统设计为FTP服务器和用户端设计,关键设计模块分为服务器设计模块和用户端设计模块。服务器设计模块包含:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。用户端设计模块包含:连接服务器模块,上传文件模块,下载文件模块。 2.1 FTP服务器整体设计

24、 服务器设计模块包含:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。其软件设计模块层次图图2.1所表示。 图2.1 FTP服务器模块设计层次图 Fig. 2.1 FTP server module level design plans 服务器日志模块。服务器日志模块关键功效为显示和统计用户登录信息和一系列操作信息。比如用户上传文件内容,上传时间;下载文件内容,下载时间等等。 在线用户模块。在线用户模块关键功效为显示目前连接上服务器用户。 程序设置模块。程序设置模块关键功效为配置服务器参数。比如许可用户下载,许可用户上传等部分列用户对服务器操作参数配置。

25、 统计模块。统计模块关键功效为统计历史时间上,服务器多种操作总量并显示。比如服务器总下载量,总上传量,总连接用户数等。 安全模块。安全模块关键功效为配置服务器安全性。关键配置内容为设置许可接入服务器IP和严禁接入服务器IP。 2.2 FTP用户端整体设计 用户端设计模块包含:连接服务器模块,上传文件模块,下载文件模块。其软件设计层次图图2.2所表示。 图2.2 FTP用户端模块设计层次图 Fig. 2.2 FTP client module level design plans 连接服务器模块。连接服务器模块关键功效为依据用户输入用户名、密码、服务器名和连接端口,完成用户端对

26、服务器接入。 上传文件模块。上传文件模块关键功效为浏览当地文件,选择上传文件,上传文件到服务器。 下载文件模块。下载文件模块关键功效为显示服务器文件目录,依据用户选择下载对应文件,存放到当地机器硬盘上。 第3章 FTP服务器模块设计 服务器关键设计模块为五个模块:服务器日志模块,在线用户模块,程序设置模块 ,统计模块,安全模块。 3.1服务器日志模块 服务器日志模块关键功效为显示和统计用户登录信息和一系列操作信息。其具体显示和统计日志信息为:用户登录信息;用户上传文件信息;用户下载文件信息;用户设置服务器文件目录信息;用户创建服务器文件目录信息;用户

27、删除服务器文件目录信息;用户修改服务器文件目录信息;用户下线信息。其程序具体设计方法为:当服务器接收到用户端命令信息时,将信息显示在服务器Log信息窗口,并将其统计在文件中。其程序设计步骤图图3.1.1所表示。 图3.1.1服务器日志模块设计步骤图 Fig. 3.1.1 Server logs modular design flow chart 其服务器日志模块运行界面图图3.1.2所表示 图3.1.2 服务器日志模块运行界面图 Fig. 3.1.2 Server logs module running interface 其设计关键实现程序代码以下: AddTraceLi

28、ne函数关键功效为向服务器日志信息显示List控件增加一个元素,用以显示到来信息。 void CTracePage::AddTraceLine(int nLevel, LPCTSTR pstrFormat, ...) { CString str; // format and write the data we were given va_list args; va_start(args, pstrFormat); str.FormatV(pstrFormat, args); try { // create new message CLogMsg *p

29、LogMsg = new CLogMsg; GetLocalTime(&pLogMsg->m_sysTime); pLogMsg->m_nLevel = nLevel; pLogMsg->m_strText = str; m_QueueLock.Lock(); m_LogQueue.AddTail(pLogMsg); m_QueueLock.Unlock(); // schedule log action PostMessage(WM_ADDTRACELINE); } catch(...) { } } OnAdd

30、TraceLine函数为日志消息响应函数,当服务器器接收到用户端信息时,向服务器日子模块发送日志消息;日子模块在响应函数OnAddTraceLine中,判定消息类别,依据其类别设定其消息显示内容和内容显示颜色。 LRESULT CTracePage::OnAddTraceLine(WPARAM, LPARAM) { CLogMsg *pLogMsg; try { // get first message in the queue // m_QueueLock.Lock(); pLogMsg = (CLogMsg *)m_LogQueue.RemoveHead()

31、 // m_QueueLock.Unlock(); switch(pLogMsg->m_nLevel) { case 1: m_TraceList.AddString(pLogMsg->m_strText, RGB(0,130,0)); break; case 2: m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,255)); break; case 3: m_TraceList.AddString(pLogMsg->m_strText, RGB(25

32、5,0,0)); break; default: m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,0)); break; } /* CString strDateTime; strDateTime.Format("%02d/%02d/%02d %02d:%02d:%02d.%03d ", pLogMsg->m_sysTime.wDay, pLogMsg->m_sysTime.wMonth, pLogMsg->m_sysTime.wYear, pLogM

33、sg->m_sysTime.wHour, pLogMsg->m_sysTime.wMinute, pLogMsg->m_sysTime.wSecond, pLogMsg->m_sysTime.wMilliseconds); switch(pLogMsg->m_nLevel) { case 1: m_LogFile << error_lvl << strDateTime << pLogMsg->m_strText << endl; break; case 2: m_LogFile << warning_lvl <<

34、strDateTime << pLogMsg->m_strText << endl; break; case 3: default: m_LogFile << trace_lvl << strDateTime << pLogMsg->m_strText << endl; break; } */ delete pLogMsg; } catch(...) { // something is wrong... } return TRUE; } OnSize为日子模块窗口大小改变事件响应函数,当应用程序窗口大小发生

35、改变时,会触发窗口改变事件。在事件响应函数OnSize中,日子模块改变窗口大小,使其和主窗口保持大小百分比。 void CTracePage::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if (IsWindow(::GetDlgItem(m_hWnd, IDC_TRACE))) { CRect rect; GetClientRect(rect); // rect.DeflateRect(5,5,10,10); m_TraceList.MoveWindow

36、rect); } } void CTracePage::OnTraceClear() { m_TraceList.ResetContent(); } void CTracePage::OnContextMenu(CWnd* pWnd, CPoint point) { CMenu menu; menu.LoadMenu(MAKEINTRESOURCE(IDR_TRACE_MENU)); menu.GetSubMenu(0)->TrackPopupMenu(0, point.x, point.y, this, NULL); } 3.2 在线用

37、户模块 在线用户模块关键功效为显示目前连接上服务器用户。其显示内容有:用户登录用户名,用户IP,用户登录时间。显示方法为使用ClistCtrl控件将显示内容显示在其上。 ClistCtrl控件常见操作方法以下。 1)设置ClistCtrl类型。 DWORD SetExtendedStyle(DWORD dwNewStyle);其中 LVS_EX_CHECKBOXES 表示添加CheckBox, LVS_EX_FULLROWSELECT 表示选择整行, LVS_EX_GRIDLINES 表示添加表格线。假如设置了LVS_EX_CHECKBOXES属性,则能够用 BOOL GetCheck(

38、 int nItem ) const;来得到某一行是否Checked。 2) 删除操作。BOOL DeleteItem( int nItem),删除指定元素,nItem为要删除元素。BOOL DeleteAllItems( ),删除全部元素。 3) 插入元素操作。int InsertItem( int nItem, LPCTSTR lpszItem),nItem为插入元素索引号,lpszItem为插入元素标签地址。 4)插入列操作。int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat = LVCFMT_LE

39、FT, int Width = -1, int nSubItem = -1 ),nCol为新列索引号,lpszColumnHeading列元素存放名称地址。  5)设置列宽操作。BOOL SetColumnWidth( int nCol, int cx ), nCol列所引号,cx设置宽度。 6)设置元素值操作。BOOL SetItemText(int nItem,int nSubItem, LPCTSTR lpszText ),nItem设置元素,nSubItem设置子元素,lpszText值内容地址。 其程序设计步骤图图3.2.1所表示。 图3.2.1 在线用户模块设计步骤

40、图 Fig. 3.2.1 Online user modular design flow chart 在线用户模块运行界面图图3.2.2所表示。 图3.2.2 在线用户模块运行界面图 Fig. 3.2.2 Online user modular running interface 其程序设计关键实现代码以下: OnInitDialog()为在线用户模块对话框初始函数,在线用户模块在这里为在线用户List显示控件,增添三个元素:“用户名”,“IP地址”,“登陆时间”,用来显示登陆用户信息。 BOOL COnlineUsersPage::OnInitDialog() {

41、CDialog::OnInitDialog(); m_OnlineUsers.InsertColumn(1, "用户名"); m_OnlineUsers.InsertColumn(2, "IP 地址"); m_OnlineUsers.InsertColumn(3, "登录时间"); DWORD dwStyle = m_OnlineUsers.GetExtendedStyle(); dwStyle |= LVS_EX_FULLROWSELECT; m_OnlineUsers.SetExtendedStyle(dwStyle); return TR

42、UE; } AddUser函数为在线用户信息显示List控件,增加元素函数。当有新用户登录服务器时,在线用户模块调用AddUser函数,显示新登录用户信息。 void COnlineUsersPage::AddUser(DWORD nThreadID, LPCTSTR lpszName, LPCTSTR lpszAddress) { CString strThreadID; strThreadID.Format("%d", nThreadID); LVFINDINFO info; info.flags = LVFI_PARTIAL|LVFI_STRING; info

43、psz = (LPCTSTR)strThreadID; int nIndex = m_OnlineUsers.FindItem(&info); if (nIndex == -1) { nIndex = m_OnlineUsers.InsertItem(0, strThreadID); } m_OnlineUsers.SetItemText(nIndex, 1, lpszName); m_OnlineUsers.SetItemText(nIndex, 2, lpszAddress); m_OnlineUsers.SetItemText(nIndex,

44、3, CTime::GetCurrentTime().Format("%H:%M:%S")); } RemoveUser函数为在线用户信息显示List控件,删除元素函数。当有用户下线时或则断开服务器连接时,在线用户模块调用RemoveUser函数,删除对应登录用户信息。 void COnlineUsersPage::RemoveUser(DWORD nThreadID) { LVFINDINFO info; CString strThreadID; strThreadID.Format("%d", nThreadID); info.flags = LVF

45、I_PARTIAL|LVFI_STRING; info.psz = (LPCTSTR)strThreadID; int nIndex = m_OnlineUsers.FindItem(&info); if (nIndex != -1) { m_OnlineUsers.DeleteItem(nIndex); } } 3.3 程序设置模块 程序设置模块关键功效为配置服务器参数。其配置参数有:FTP连接端口,最大用户连接数,服务器开启方法,服务器系统信息,Log文件查看和清除。其程序设计方法为:系统时刻监控程序设置模块,当程序设置模块触发应用消息时,系统重新读

46、入配置信息;当程序设置模块触发查看Log信息时,打开Log文件;当程序设置模块触发清除Log信息时,清空Log文件。其程序步骤图图3.3.1所表示。 图3.3.1 程序设置模块设计步骤图 Fig. 3.3.1 Procedures settings modular design flow chart 程序设置模块运行界面图图3.3.2所表示。 图3.3.2 程序设置模块运行界面图 Fig. 3.3.2 Procedures settings modular running interface 其程序设计关键实现实现代码以下: OnDestroy函数为程序设置模块销毁函数。

47、当主程序退出时,销毁程序设置模块,此时程序设置模块调用OnDestroy函数读取配置参数,并将其写入配置文件中存放。 void CConfigurationPage::OnDestroy() { UpdateData(); // save settings AfxGetApp()->WriteProfileInt("Settings", "Port", m_nPort); AfxGetApp()->WriteProfileInt("Settings", "MaxUsers", m_nMaxUsers); AfxGetApp()->WriteProfileInt("Se

48、ttings", "Timeout", m_nTimeout); AfxGetApp()->WriteProfileString("Settings", "WelcomeMsg", m_strWelcomeMessage); AfxGetApp()->WriteProfileString("Settings", "GoodbyeMsg", m_strGoodbyeMessage); AfxGetApp()->WriteProfileInt("Settings", "LaunchOnStartup", m_bLaunchOnStartup); AfxGetApp()->Wri

49、teProfileInt("Settings", "StartInTray", m_bStartInTray); AfxGetApp()->WriteProfileInt("Settings", "AutoActivate", m_bAutoActivate); AfxGetApp()->WriteProfileInt("Settings", "LogLevel", m_nLogLevel); AfxGetApp()->WriteProfileString("Settings", "AppName", m_strApplicationName); CDialogResize::

50、OnDestroy(); } OnView()函数为程序设置模块日志文件查看函数。当用点击查看日志按钮时,程序设置模块调用OnView()函数打开日志文件。 void CConfigurationPage::OnView() { int ExecStatus = (UINT)ShellExecute(m_hWnd, "open", "NOTEPAD.EXE", (LPCTSTR)theApp.m_LogFile.m_FileName, 0, SW_SHOW); switch(ExecStatus) { case 0:

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服