FTP服务器的构建与应用毕业论文.doc
南京邮电大学毕 业 论 文题 目FTP服务器的构建与应用专 业网络工程学生姓名 班级学号 指导教师 指导单位通信与信息工程学院 通信与信息工程学院 日期: 年 月 日至 年 月 日毕业设计(论文)原创性声明本人郑重声明:所提交的毕业设计(论文),是本人在导师指导下,独立进行研究工作所取得的成果。除文中已注明引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写过的作品成果。对本研究做出过重要贡献的个人和集体,均已在文中以明确方式标明并表示了谢意。 论文作者签名: 日期: 年 月 日摘 要本程序是一个FTP服务器系统,实现了FTP服务器所应该具备的大多数功能,包括用户的登录(实名或匿名),文件的上传、下载、删除、目录查询等,并给出相应的提示。通过该程序的开发,基本上实现了一个FTP服务器所应该具有的功能,能够解释一般的FTP命令,并且符合电信标准规范。本软件的设计,即从需求分析,软件设计到软件功能实现,都始终遵循标准的思想和方法。本文中在描述程序的同时也采用了图表说明方式,使文章明确清晰,便与阅读和理解。本程序采用Serv-U软件进行服务器的搭建,并采用VC+ 6.0作为客户端的开发工具,设计步骤采用自顶向下的方法。关键词:FTP;上传;下载;服务器;客户端ABSTRACTThis procedure is a FTP(File Transfer Protocol) server system, carrying out most functions that FTP server should have, including the logging of the customer(real name or anonymous), document of up load, download, delete, the catalogue choice.etc., and hint helps for every function. Pass the development of that procedure, carried out the function that a FTP server should have basically, can explain the general order of FTP, and match the norm of telecom standards. The design of this software, namely analytical from the need, the software designs the software function to carry out, all following the thought and the method of the software engineering always. It also adopted some charts in the text elucidation, make article definitely clear, then help with read and comprehend.This procedure adopts the Serv-U to build server and adopts VC+6.0 to develop the client. The design step adoption from a method for get down.Key words: FTP ;upload; download; server; client目 录第一章 课题概述11.1 课题简介11.2 技术支持11.3 总体设计1第二章 FTP协议与原理32.1 FTP简介32.2 FTP工作运行原理32.3 FTP文件传输连接类型6第三章 开发环境及工具介绍83.1 C语言及VC+概述83.2 MFC介绍93.3 Serv-U软件介绍103.4 SOCKET介绍10第四章 FTP服务器的构建与应用124.1 需解决的问题124.2 功能分析124.3 FTP服务器的搭建124.4 FTP客户端的搭建20第五章 系统测试365.1 测试过程365.2 结果分析385.3 测试出现的问题和不足39结束语40致谢41参考文献42附录1第一章 课题概述1.1课题背景在众多网络应用中,FTP(文件传输协议)有着非常重要的地位。Internet中一个十分重要的资源就是软件资源,而各种各样的软件资源大多数都放在FTP服务器中。与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户发出的命令,并将执行结果返回给客户机。FTP服务可以根据服务对象的不同分为两类:系统FTP服务器只允许系统上的合法用户使用;匿名FTP服务器(Anonymous FTP Server)允许任何人登录到FTP服务器去获取文件。1.2技术支持与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。 在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。 使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可下载或上传文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。换言之,除非有用户ID和口令,否则便无法传送文件。这种情况违背了Internet的开放性,Internet上的FTP主机何止千万,不可能要求每个用户在每一台主机上都拥有帐号。匿名FTP就是为解决这个问题而产生的。 匿名FTP是这样一种机制,用户可通过它连接到远程主机上,并从其下载文件,而无需成为其注册用户。系统管理员建立了一个特殊的用户ID,名为anonymous, Internet上的任何人在任何地方都可使用该用户ID。 通过FTP程序连接匿名FTP主机的方式同连接普通FTP主机的方式差不多,只是在要求提供用户标识ID时必须输入anonymous,该用户ID的口令可以是任意的字符串。习惯上,用自己的E-mail地址作为口令,使系统维护程序能够记录下来谁在存取这些文件。 值得注意的是,匿名FTP不适用于所有Internet主机,它只适用于那些提供了这项服务的主机。 当远程主机提供匿名FTP服务时,会指定某些目录向公众开放,允许匿名存取。系统中的其余目录则处于隐匿状态。作为一种安全措施,大多数匿名FTP主机都允许用户从其下载文件,而不允许用户向其上传文件,也就是说,用户可将匿名FTP主机上的所有文件全部拷贝到自己的机器上,但不能将自己机器上的任何一个文件拷贝至匿名FTP主机上。即使有些匿名FTP主机确实允许用户上传文件,用户也只能将文件上传至某一指定上传目录中。随后,系统管理员会去检查这些文件,他会将这些文件移至另一个公共下载目录中,供其他用户下载,利用这种方式,远程主机的用户得到了保护,避免了有人上传有问题的文件,如带病毒的文件。 作为一个Internet用户,可通过FTP在任何两台Internet主机之间拷贝文件。但是,实际上大多数人只有一个Internet帐户,FTP主要用于下载公共文件,例如共享软件、各公司技术支持文件等。 Internet上有成千上万台匿名FTP主机,这些主机上存放着数不清的文件,供用户免费拷贝。实际上,几乎所有类型的信息,所有类型的计算机程序都可以在Internet上找到。这是Internet吸引我们的重要原因之一。1.3总体设计我将利用Serv-U FTP Server软件搭建一个FTP服务器,使其具有基本的FTP服务器功能,同时再进行进一步完善FTP服务器架设,在原有基础上增加功能,以达到课题要求。同时我还将利用基于Visual C+的SOCKET编程完成的FTP客户端的搭建,使之能够与服务器进行通信测试、文件互传。并进一步完善FTP客户端程序,在原有的基础上达到课题要求功能第二章 FTP协议与原理2.1 FTP简介FTP(File Transfer Protocol)是文件传输协议的简称。直到1994年,当WWW掌管Internet时,文件传输协议(FTP)是和e-mail一样最广泛应用的Internet客户程序。它被用于作为访问Internet主机文件的一个远程外壳。使用FTP可以连接到一个FTP服务器,在可用的目录间游历,并且传输文件。 一个FTP站点可以是公用的,私有的,或者两者兼有之。使用一个私有的账号,你可以拥有访问整个网络的目录结构,或者只是特定的区域权限。Internet同时也是一个拥有很多允许任何人连接和传输文件的FTP服务器的中心,不管他们有没有主机上的账号。这叫做匿名FTP。当你登录到一个匿名FTP站点时,你通常使用“anonymous”作为你的用户名,“guest”或你的 e-mail地址作为密码。例如,匿名FTP经常用于发布大量的公用领域或共享软件。其中一个著名的公用FTP站点是ftp.cica.indiana.edu。FTP的主要设计目的是用于程序之中,不过FTP程序自身已经成为任何一个TCP/IP实施的重要部分。当你在Windows 3.11、Windows95或Windows NT中使用Microsoft的TCP/IP驱动程序时,FTP.exe将被安装。实际上,FTP已经包含于Netscape和其它的WWW浏览器中,因此你可以使用浏览Web的程序同时浏览FTP服务器。一般来说.用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。 与大多数Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序代表用户接收到这个文件,将其存放在用户目录中。2.2 FTP工作运行原理2.2.1 FTP工作原理FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层上,即应用层,使用TCP传输而不是UDP,这样FTP客户在和服务器建立连接前就要经过一个被广为熟知的“三次握手”的过程,它带来的意义在于客户与服务器之间的连接是可靠的,而且是面向连接,为数据的传输提供了可靠的保证。采用FTP协议可使 Internet用户高效地从网上的FTP服务器下载大信息量的数据文件,将远程主机上的文件拷贝到自己的计算机上。以达到资源共享和传递信息的目的。由于FTP的使用使得Internet上出现大量为用户提供的下载服务器。Internet成为了一个巨型的软件仓库。FTP在文件传输中还支持断点续传功能,可以大幅度地减小CPU和网络带宽的开销。2.2.2 FTP服务器登录方式的分类我们已经知道FTP服务实际上就是将各种可用资源放在各个FTP主机中,网络上的用户可以通过Internet联到这些主机上,并且使用FTP(文件传送协议)将想要的文件拷回到自己的计算机中。在使用FTP传送文件之前,最主要的步骤就是如何联入各Internet上的FTP服务器。联入的主要步骤也就是登录(Login)的过程。通常用户在欲下载的FTP服务器上输入许可的帐号(account)和密码(password),得到该服务器许可后,即可进入。FTP服务器分为两种: 其一,为一般的FTP服务器,进入这种服务器时必须拥有该主机的帐号和密码;其二,为匿名FTP服务器(称为anonymous FTP服务器)登录此类FTP服务器时,用户只要以“guest”或“anonymous”为帐号,并以自己的E-mail地址为密码,即可进入该FTP服务器主机,任意浏览和下载文件。当用户登录到某个FTP服务器时,如果用“guest”或“anonymous”为帐号,均无法进入,则表明该服务器不是匿名FTP服务器。实际上,匿名FTP只是FTP中的一种,它是一种开放式帐号的FTP服务器,它可以为网络上的任何使用者所利用,与非匿名的FTP不同的只是登录时的帐号为“anonymous”,而密码为任一用户的E-mail地址。现在,某些站点还明确要求使用电子邮件地址作为匿名用户密码,而不接受“guest”这样的密码。提供电子邮件地址,有助于让站点的拥有者了解到是哪些人在使用他们的服务。2.2.3 FTP运行原理FTP的工作原理与其他许多网络实用程序一样,也是基于客户/服务器模式。互联网文件传输协议(File Transfer Protocol) 标准是在FTC959说明的。该协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的标准。一般来说,要传输文件的用户需先经过认证以后才能登录ftp服务器,访问在远程服务器的文件。大多数的FTP服务器往往提供一个guest的公共帐户来允许没有FTP服务器帐户的用户可以访问该FTP服务器。一个FTP会话通常包括五个软件元素的交互。就模型而言,从1973年以来并没有什么变化。如图2.1所示。图2.1 FTP协议模型下表是交互元素列表表2.2交互元素列表软件要素名称应用说明用户接口提供了一个用户接口并使用客户端协议解释器的服务USERPI客户端协议解释器,向远程服务器协议机发送命令并且驱动客户传输过程UPTP客户端数据传输协议,负责实现与远端服务器进行数据传输,并与客户端本地文件系统交互SPI服务器协议解释器,响应客户协议机发出的命令,并驱动服务器端数据传输过程SDTP服务器数据传输协议负责和客户进行数据传输以及服务器端文件系统通信在一个FTP会话中,会存在两个独立的网络连接,一个是由两端的PI使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接(control connection),DTP之间的连接被称作数据连接(data connection)。通常情况下,ftp服务器监听端口号2 1来等待控制连接建立请求,当客户连接请求到达,会在客户和ftp服务器之间建立一个控制连接。而数据连接端口号的选择依赖于控制连接上的命令,通常是客户发送一个控制消息来指定客户需要建立一个数据连接来传输ftp数据(如下载/上载一个文件,显示当前目录的内容等等,都需要建立数据连接来传输数据),在该消息中,指定了客户监听并等待连接的端口号,而服务器从控制连接收到该命令,向客户端发起一个连接请求到消息中指定的端口号,客户端收到该请求以后就会建立一个数据连接。连接建立以后,服务器或客户就会主动通过该连接发送数据(可能是要传输的文件,也可能是用户在命令行上发出的IS命令的输出)。2.3 FTP文件传输连接类型一个完整的FTP文件传输需要建立两种类型的连接,一种为文件传输下命令,称为控制连接,另一种实现真正的文件传输,称为数据连接。1控制连接客户端希望与FTP服务器建立上传下载的数据传输时,它首先向服务器的TCP 21端口发起一个建立连接的请求,FTP服务器接受来自客户端的请求,完成连接的建立过程,这样的连接就称为FTP控制连接。2数据连接FTP控制连接建立之后,即可开始传输文件,传输文件的连接称为FTP数据连接。FTP数据连接就是FTP传输数据的过程,它有两种传输模式:主动传输模式(Active)和被动传输模式(PASSIVE),如图2.3所示。图2.3主动传输模式和被动传输模式1)主动传输模式当FTP的控制连接建立,客户提出目录列表、传输文件时,客户端发出PORT命令与服务器进行协商,FTP服务器使用一个标准端口20作为服务器端的数据连接端口(ftp-data),与客户建立数据连接。端口20只用于连接源地址是服务器端的情况,并且端口20没有监听进程来监听客户请求。 在主动传输模式下,FTP的数据连接和控制连接方向相反,由服务器向客户端发起一个用于数据传输的连接。客户端的连接端口由服务器端和客户端通过协商确定。主动传输模式下,FTP服务器使用20端口与客户端的暂时端口进行连接,并传输数据,客户端只是处于接收状态。2)被动传输模式当FTP的控制连接建立,客户提出目录列表、传输文件时,客户端发送PASV命令使服务器处于被动传输模式,FTP服务器等待客户与其联系。FTP服务器在非20端口的其它数据传输端口上监听客户请求。 在被动传输模式下,FTP的数据连接和控制连接方向一致,由客户端向服务器发起一个用于数据传输的连接。客户端的连接端口是发起该数据连接请求时使用的端口。当FTP客户在防火墙之外访问FTP服务器时,需要使用被动传输模式。被动传输模式下,FTP服务器打开一个暂态端口等待客户端对其进行连接,并传输数据,服务器并不参与数据的主动传输,只是被动接受。第三章 开发环境及工具介绍3.1 C语言及VC+概述3.1.1 C语言概述C语言是在70年代初创建的一种计算机语言,它既有汇编语言可以直接访问机器硬件的功能,又具有高级语言面向用户、可读性好和易于记忆的优点,因此受到广大程序员的欢迎。C是一种结构化的程序设计语言。它由顺序、选择和循环三种基本结构组成,便于实现由上到下、逐步细化的结构化程序设计。因此,用C编写的程序具有容易理解和便于维护的优点。C语言的函数结构有利于程序分割为相对独立的功能模块,为大型软件实现模块化的程序设计创造了条件。C没有依赖于硬件的输入和主、输出语句,因此用它编制的程序有较好的可移植性。C语言首先在Unix操作系统中得到了应用,由于它的这些优点很快成为当前应用最为广泛的计算机语言。C语言的优点有:(1)简洁紧凑、灵活方便C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。(2)运算符丰富C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。(3)数据类型丰富C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。(4)C是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。3.1.2 VC+介绍Microsoft Visual C+是Microsoft公司推出的开发Win32环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。 它以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著。Visual C+ 6.0是微软公司于1998年推出的。它的最大优点就是提供了功能强大的MFC类库,MFC是一个很大的C+类层次结构,其中封装了大量的类及其函数,很多Windows程序所共有的标准内容可以由MFC的类来提供,MFC类为这些内容提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓,这将简化编程工作大大的减少程序员编写的代码数量,使编程工作变得更加轻松容易。3.1.3 VC+6.0集成开发环境Visual C+提供了一个集源程序编辑、代码编译与调试于一体的开发环境,这个环境称为集成开发环境,对于集成开发环境的熟悉程度直接影响程序设计的效率。开发环境是程序员同Visual C+的交互界面,通过它程序员可以访问C+源代码编辑器、资源编辑器,使用内部调试器,并且可以创建工程文件。Microsoft Visual C+是多个产品的集成。Visual C+从本质上讲是一个Windows应用程序。Visual C+有两个版本,对于每一个版本,都有对应的文档。1)专业版本,它包括一个更高级的优化编译器,更广泛的文档,并能设计基于DOS的应用程序。2)标准版本,其费用较低,没有那么高级的编译器,文档较少,且不能设计基于DOS的应用程序。3.2 MFC介绍MFC(Microsoft Foundation Class)库是Microsoft为利用VC+开发的Windows应用程序而提供的应用程序框架,在这个框架的支持下,对于不同的应用程序,编程的主要任务是填写各自特殊部分的代码,MFC由于某种原因130多个类组成,这些类封装了两千多个API函数。MFC类库主要包括两类,一组是一般用途类,它提供了许多有用的抽象类,如Cfile类代表文件;CWnd类是窗口类,这些在Windows的编程中有重要的作用。另一类是OLE类,这一类专门用于OLE的编程。使用MFC的优点很多,主要的优点如下:1) 用类编程,将代码和数据封装在类中,大大减少了编程的复杂性。2) 通过继承实现了基本的代码重用。在MFC中定义了大量类,所以可以在编程中通过继承来使用这些类,另外,MFC还在这些类中定义了大量的虚函数,也就是说,对于这些函数,不但可以保存它们原有的特性,还可以对这些函数进行修改,使之具有新的特性。3) 提供了大量的工具方便编程。在MFC中,可以使用AppWizard(应用程序向导),来建立应用程序的框架,可以使用ClassWizard(类向导)在程序中添加类、变量以及在程序中传递各种信息。用ControlWiard(控件向导)创建可以在Windows中注册的控件等。4) 借助设计良好的类库通常可以减少代码规模。3.3 Serv-U软件介绍Serv-U是目前众多的FTP服务器软件之一。通过使用Serv-U,用户能够将任何一台PC设置成一个FTP服务器,这样,用户或其他使用者就能够使用FTP协议,通过在同一网络上的任何一台PC与FTP服务器连接,进行文件或目录的复制,移动,创建,和删除等。这里提到的FTP协议是专门被用来规定计算机之间进行文件传输的标准和规则,正是因为有了像FTP这样的专门协议,才使得人们能够通过不同类型的计算机,使用不同类型的操作系统,对不同类型的文件进行相互传递。虽然目前FTP服务器端的软件种类繁多,相互之间各有优势,但是Serv-U凭借其独特的功能得以展露头脚。具体来说,Serv-U 能够提供以下功能: 1) 符合windows标准的用户界面友好亲切,易于掌握。 2) 支持实时的多用户连接,支持匿名用户的访问; 3) 通过限制同一时间最大的用户访问人数确保PC的正常运转。 4) 安全性能出众。在目录和文件层次都可以设置安全防范措施。 5) 能够为不同用户提供不同设置,支持分组管理数量众多的用户。 6) 可以基于IP对用户授予或拒绝访问权限。 7) 支持文件上传和下载过程中的断点续传。 8) 支持拥有多个IP地址的多宿主站点。 9) 能够设置上传和下载的比率,硬盘空间配额,网络使用带宽等,从而能够保证用户有限的资源不被大量的FTP访问用户所消耗。 10) 可作为系统服务后台运行。 11) 可自用设置在用户登录或退出时的显示信息,支持具有UNIX 风格的外部链接。3.4 SOCKET介绍所谓socket通常也称作"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java .net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。Socket通讯机制是一种较原始的通讯机制,通过Socket的数据表现出来的形式是原始字节流信息,通讯双方只要在此基础上按照双方约定方式进行数据的格式化和解析处理工作,这样才能完成具体的应用,即实现某种协议的过程。Socket可以看成是在两个程序间进行通讯连接的两个端点,一个程序将一段信息写入一个Socket中,该Socket将这段信息发送给另外一个Socket,以便使这段信息能传达到其他程序中。程序A程序B网络管理软件SocketSocket网卡图3.1是Socket的工作原理图。图3.1 Socket原理图Socket有两种主要的工作方式:有连接的和无连接的。有连接方式如流通讯;无连接方式如数据包方式。有连接的Socket操作就像一部电话。它们必须建立一个连接和一个呼叫。所有的事情在到达时的顺序与它们出发时的顺序一样。第四章 FTP服务器的构建与应用4.1 需解决的问题首先,需选择好开发工具,设想好程序将要实现的大体功能后,我们就要分析该程序所需的条件,对该程序中将要遇到的问题做一下准备工作,以便于以后设计的顺利进行。其次,要根据我们想要在局域网内进行文件传输的要求,因为本程序要实现的是FTP服务器的构建与应用,所以我要在搭建好服务器的同时,配上相应的FTP客户端,以实现其应用。具体还有:(1)客户端接口与服务器接口对接的问题。只有使用相同的接口才能顺利实现对接。我打算采用FTP默认的21接口。(2)FTP客户端的功能实现。本客户端可以实现FTP客户的基功能。当链接成功后,可以顺利实现资料的上传、下载、以及资料路径的查询等。(3)FTP客户端的美化。由于MFC的界面相对单一,界面基本为最原始界面,所以对客户端软件的美化也是十分必要的。4.2 功能分析在做程序之前,我们要先确定本程序的功能,只有确定了功能,才能确定程序中使用什么函数来实现。如果想在局域网内进行文件传输,首先要有服务器端和客户端,两者配合使用。先打开客户端和服务器,然后让客户登陆一下服务器,服务器端设制一下服务器所完成的功能,然后客户端再向服务器发送应用请求,以此达到课题目的。 4.3 FTP服务器的搭建从http:/www.serv-处下载最新FTP Serv-U Server(下文简称Serv-U),然后把它安装到计算机,操作步骤如下:(1)双击ServUSetup.exe,运行Serv-U安装程序,弹出欢迎窗口,单击【下一步】按钮;图4.1 选择安装Serv-U程序(2)选择接受协议,单击【下一步】按钮;图4.2 接受安装协议(3)选择安装路径,点击【下一步】按钮; 图4.3 选择安装路径(4)确定安装路径及开始菜单后,点击【安装】按钮,进行程序安装;图4.4 确认位置,开始安装待安装结束后,对Serv-U进行基本设置1.设置Serv-U的域名与IP地址安装完Serv-U以后,需要对此进行设置,才能正式投入使用,首先对域名与IP地址进行设置,操作步骤如下:(1)倘若是初次安装,会弹出如下对话框,选择【是】定义新域;图4.5 定义新域(2)输入域名称后选择【下一步】定义新域;图4.6 输入新域名称(3)使用系统默认端口,直接点击【下一步】;图4.7 默认端口(4)默认IP地址监听,直接点击【下一步】;图4.8 默认IP地址(5)选择密码加密模式,点击【完成】;图4.9 密码加密模式2.创建新账户Serv-U已经允许匿名用户登录,并取得访问权限,但最好还是建立一套自己的完整用户管理制度。具体操作步骤如下:(1)选择【是】创建新用户账户;图4.10 创建用户帐户(2)选择使用用户向导安装后,输入新用户账户的登录ID,点击【下一步】;图4.11 填写登录ID(3)设置登录密码,若无密码可不填,接着点击【下一步】;图4.12 填写登录密码(4)设置用户登录根目录,若选择锁定于根目录,则其根目录的地址将被隐藏而只显示为“/”,设定好后选择【下一步】;图4.12 设定用户根目录(5)选择用户访问权限,有“限制访问”和“完全访问”两项选择,接着点击【完成】,新用户创建成功;图4.13 设定用户访问权限(6)如图4.14所示,用户账户列表中多出刚刚新建的账户;图4.14 用户账户列表如图4.15所示,服务器管理者可以对用户进行统计、监控和管理;图4.15 用户活动统计同时还可以设定限制等高级功能,如图4.16;图4.16 限制功能设置Serv-U的功能十分强大,这里就不一一介绍,在用Serv-U软件搭建好服务器后,接着是编辑客户端软件,以此达到课题要求。4.4 FTP客户端的搭建本程序是一个小型FTP客户端程序。主要实现的是FTP用户的登录、上传、下载、查询路径等,并给出相应的提示。程序采用Visual C+ 6.0开发,基于MFC的Windows API函数进行编程。由于采用了MFC自带的FTP库函数编程,使得在搭建FTP客户端程序的时候变得很便捷。客户端程序采用MFC事件响应触发机制,即每按下一个按键便响应相应的事件去触发程序的执行。客户端主要由以下四个事件组成:连接;查询;上传;下载。每个事件已近用类封装起来独立运行。4.4.1 连接当界面中的连接按钮被点击后,会转向连接的类函数,连接函数主要调用Windows API的GetFtpConnection函数进行客户端程序与FTP服务器程序之间的连接。GetFtpConnection连接到一个FTP服务器,创建并返回指向CFTPConnection对象的指针。如果函数调用错误的话,可通过检查产生的CInternetException对象来确定出错类型。在程序中,如果检查产生了调用错误,则会在后面的程序中将连接删除。在信息提示框中会提示响应的连接正确或者错误信息。其中核心的连接代码如下所示:if (!pFtpConnect)/If pFtpConnect =NULL,即需要进行的是连接服务器工作trypFtpConnect = sess.GetFtpConnection(m_strFtp, m_strName, m_strPwd);catch (CInternetException* pEx)/If connect to