嵌入式ftp客户端的设计与实现_第1页
嵌入式ftp客户端的设计与实现_第2页
嵌入式ftp客户端的设计与实现_第3页
嵌入式ftp客户端的设计与实现_第4页
嵌入式ftp客户端的设计与实现_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式FTP客户端的设计与实现摘要FTP即文件传输协议,它是目前INTERNET上使用的最广泛的文件传送协议。FTP是TCP/IP网络和INTERNET上最早使用的协议之一。用户可以通过自己的PC机与所有运行FTP协议的服务器相连,访问服务器上的信息。FTP客户端可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录等功能。随着嵌入式系统的广泛应用,嵌入式系统对图形用户界面的需求也越来越重要,QT是一个跨平台的C图形用户界面应用程序框架,可以在众多嵌入式场合发挥很好的作用。本课题是基于QT来设计的FTP客户端,该客户端实现了给出IP地址进行FTP登录,并能查看服务端的文件信息列表,从而对指定文件的上传和下载功能,具有一定的实用性和方便性。关键词FTP;跨平台;QT;上传;下载THEDESIGNANDIMPLEMENTATIONOFEMBEDDEDFTPCLIENTABSTRACTFILETRANSFERPROTOCOL,WHICHISTHEMOSTWIDELYUSEDPROTOCOLFORTRANSMISSIONATPRESENTFTPISONEOFTHEEARLIESTPROTOCOLUSEDINTCP/IPNETWORKANDINTERNETCLIENTSCANLINKOTHERFTPSERVERSINTHEWORDBYTHEIRCOMPUTERSANDVISITLARGEAMOUNTOFINFORMATIONSFTPCLIENTCANISSUECOMMANDSTOTHESERVERTODOWNLOADFILES,UPLOADFILES,CREATEORCHANGEDIRECTORIESONTHESERVERALONGWITHTHEEMBEDDEDSYSTEM,THEGRAPHICALUSERINTERFACEISMOREANDMOREIMPORTANTQTISACROSSPLATFORMCGRAPHICALUSERINTERFACEAPPLICATIONFRAMEWORK,CANPLAYAGOODROLEINMANYEMBEDDEDAPPLICATIONSTHISSYSTEMISTODESIGNAFTPCLIENTBASEDONQT,THISCLIENTTOACHIEVEPRODUCESTHECOMPUTERIPADDRESSFORFTPLOGIN,CHECKSERVERSIDEFILEINFORMATIONLIST,ANDREALIZETOTHESPECIFIEDFILEDOWNLOAD,HASACERTAINPRACTICALITYANDCONVENIENCEKEYWORDSFTPPROTOCOL;CROSSPLATFORM;QT;FILEUPLOADFILEDOWLOAD目录摘要IABSTRACTII1选题的目的和意义111选题背景112目的和意义113当前发展214所做工作22相关基础技术与开发平台321QT开发工具简介3211QT的主要特性3212QT编程机制简介3213QT的优势5214QTCREATOR介绍6215QT所支持的平台6216QT类库822FTP通信协议10221FTP基本简介10222FTP工作原理10223FTP的作用11224FTP的使用11225FTP的缺点123需求分析1331设计目的1332完成目标1333功能需求13331用户需求分析13332功能需求分析13333性能需求1434环境需求1435界面设计需求144软件总体分析与设计1541系统模块设计1542详细设计16421客户端连接流程图16422上传子模块流程图17423下载子模块流程图1843系统设计与程序的实现19431界面实现部分19432模块功能的实现205系统运行及测试2651环境的搭建26511安装QTCREATOR和QT框架26512修改系统的环境变量27513成功安装后的QT界面2852系统运行28521运行前分析28522主要功能运行29523其他功能3253系统测试34531QTCREATOR调试器34532QT调试方法34533出现的错误及解决方案3554小结35总结36参考文献38致谢39外文原文40中文翻译551选题的目的和意义11选题背景现如今人类已经进入了21世纪,科学技术的突飞猛进的发展,知识经济的初见端倪,和INTERNET技术的迅猛发展与普及,推动了整个世界范围的信息的传输和信息的交流。FTP协议是INTERNET上最早的应用也是最广泛的应用,直到目前为止它仍然是最重要的同时也是最基本的应用之一,在互联网刚开始发展的时候曾经占据整个互联网通信量的三分之一。FTP主要解决了在不同操作系统下处理文件格式的不兼容的问题,如果用户想使用其他计算机上的文件,最理想的办法就是把它复制到自己的计算机当中,方便在自己的计算机中使用。FTP客户端正是完成这项工作的工具,成千上百万的数据、资料分布在世界各地,有了FTP客户端之后,只要轻点几下鼠标,就可以轻而易举的获得你想要的任何资料。在众多的网络应用中,FTP有着非常重要的地位,在INTERNET中一个十分重要的就是资源,而各种各样的资源大多数都是放在FTP服务器中的,为了获得这些资源,我们必须使用FTP客户端软件。本毕业设计将介绍FTP客户端系统的设计和开发工作,因此,文章涵盖以下三方面的内容1基础技术的介绍;2文件传输系统的详细需求;3介绍系统的具体实现;4对最终系统进行运行测试。通过这次课题,对整个开发过程有深入的了解,提高实践能力。FTP将在未来的很长时间里作为主要的文件传输协议,使用前景仍然宽广,功能会更加强大。12目的和意义FTP协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。尽管WORLDWIDEWEBWWW已经替代了FTP的大多数功能,FTP仍然是通过INTERNET把文件从客户端复制到服务器上的一种很实用的途径。FTP客户机可以给服务器发出相应的命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件大多是使用的命令行操作,但是后来有了像CUTEFTP这样的图形界面软件,使得FTP传输变得非常方便易学。主要使用它进行“上载”。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名FTP服务器”。FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP是一个8位的客户端服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或UNICODE一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。选择此课题作为毕业设计,是希望将学习累计的知识用于实践,开发出该系统的各项功能,使用户很简单的就能登录FTP服务器、上传下载数据等功能的需求。与此同时,在开发中学会发现解决问题,提高软件开发能力,为今后的工作、学习、项目开发累计实践经验。所以选择了使用QT来开发实现文件传输功能的FTP客户端。13当前发展目前为止已经有许多互联网站点已经建立了可供所有人都能访问的资料库,并且这些资料都可以被通过使用FTP来获取。匿名的FTP使得用户有机会存取到世界上最大的信息库,这个信息库都是慢慢日积月累起来的,并且还在有不断的增长的趋势,永远都不会关闭,涉及面也很广,几乎涉及到所有的主题。而且,这一切都是免费的提供每个人下载和使用的。INTERNET之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。由于FTP提供的文件传输是将一个完整的文件从一个系统复制到另一个系统中。要使用FTP,就需要有登陆服务器的注册账号,或者匿名FTP的服务器来使用。与TELNET类似,FTP最早的设计用于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同的字符集。但不同的是,TELNET获得异构型是强制两端都采用同一标准使用7比特ASCII码的NVT。而FTP是采用另一种方法来处理不同系统间的差异FTP支持有限数量的文件类型如ASCII文件,二进制文件等等和文件结构(面向字节流或记录)。14所做工作目前在国内外基于FTP的网络通信仍然是INTERNET上文件传输的通用的方法,就如同当初FTP刚出现的时候,FTP并没有发生多大的变化,但是在INTERNET迅猛的发展的形势下,其安全问题还是日益突出出来。但是FTP还是非常的流行,大部分的网站以及论坛等等涉及到用户下载的网站都提供了FTP服务,特别是校园中也可以利用FTP服务器来使身处校园中的每个人都可以通过FTP来下载或共享文件,这使得每个人都能享受到网络的便捷。在现如今网络上有许多的FTP客户端类的软件,但是其中大部分都是由于其界面复杂,操作繁琐,不被大多数用户接受,为了更好的利用网络资源,为了方便用户使用FTP,我设计了一个非常简单容易使用用的FTP客户端。2相关基础技术与开发平台QT开发工具简介211QT的主要特性QT是一个跨平台的C图形用户界面库,是由挪威TROLLTECH公司开发,目前包括QT/X11、基于FRAMEBUFFER的QT/EMBEDDED、快速开发工具QTDESIGNER以及国际化工具QTLINGUIST等。人们所熟知的LINUX下面的KDE环境就是基于QT开发而成的。QT支持UNIX和LINUX系统以及WINDOWS系统。QT的主要特点有面向对象,很容易扩展,并且允许真正的组件编程;QT对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性,使用QT类编写的程序可以实现“一次编码,到处编译”,极大的降低了跨平台开发的难度;构件支持,对于对象间通信,QT没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽”的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。QT的这些特点使它非常适合于真正的构件编程,同时使各个组件之间的协同工作变得十分简单,并且QT是直接基于XLIB的,不依赖MOTIF工具包,所以它的执行效率比一般的基于平台的代码的执行效率要高。QT类库是一个拥有超过400个的C类,同时不断扩展的库。它封装了用于端到端应用程序开发所需要的所有基础结构。优秀的QT应用程序接口包括成熟的对象模型,内容丰富的集合类,图形用户界面编程与布局设计功能,数据库编程,网络,XML,国际化,OPENGL集成等。QT设计者是一个功能强大的GUI布局与窗体构造器,能够在所有支持平台上,以本地化的视图外观与认知,快速开发高性能的用户界面。QT语言家是一套用来消除国际化工作流程所带来障碍的工具。使用QT语言家,开发小组可把应用程序的翻译转换外包给非技术性翻译人员,从而可增加精确度,大大加快本地化处理过程。QT助手是一个完全可自定义,重新分配的帮助文件或文档浏览器,它可与基于QT的应用程序运行。使用QT助手,开发小组同样能够很大程度上加快文档的处理过程。212QT编程机制简介信号/槽机制是QT的一个最重要的特征并且也许是QT与其它工具包的最不相同的部分。在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。更一般地,我们希望任何一类的对象可以和其它对象进行通讯。较老的工具包使用一种被称作回调的通讯方式来实现同一目的。回调是指一个函数的指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。处理函数在适当的时候调用回调。回调有两个主要缺点。首先他们不是类型安全的。我们从来都不能确定处理函数使用了正确的参数来调用回调。因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。QT的信号与槽机制是不同的。QT的信号与槽均以函数形式出现,QT的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。QT的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理你所感兴趣的信号。我们可以用CONNECT函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。从某种意义上讲,它们也许对外面的世界感兴趣。这就是所有的对象通讯时所做的一切。它不知道也不注意无论有没有东西接收它所发射的信号。当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图21)。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发射的信号也将返回。信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类MATTHIASDALHEIMER,2002。信号和槽的机制是类型安全的一个信号的签名必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。它以警告的方式报告类型错误,而不会使系统产生崩溃。信号和槽是宽松地联系在一起的一个发射信号的类不用知道也不用注意哪个槽要接收这个信号JOHANTHELIN,2007。QT的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的不会再有回调核心转储COREDUMP。你可以把许多信号和你所希望的单一槽相连,并且一个信号也可以和你所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。(这时,只要第一个信号被发射时,第二个信号立刻就被发射。)总体来看,信号和槽构成了一个强有力的组件编程机制。如果一个类要使用信号与槽机制,它就必须是从QOBJECT或QOBJECT的子类继承,而且类的定义必须加上Q_OBJECT宏。SIGNALS、SLOTS和EMIT是QT特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C编译器。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个PUBLICSLOTS包含了任何信号都可以相连的槽ANDREWKRAUSE,2007。一个PROTECTEDSLOTS包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。一个PRIVATESLOTS包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。CONNECT(对象1,信号1,对象2,插槽1)CONNECT(对象1,信号1,对象2,插槽2)CONNECT(对象1,信号2,对象4,插槽1)CONNECT(对象3,信号1,对象4,插槽3)图21信号和槽的连接原理图213QT的优势作为嵌入式图形界面的开发工具,QT的优势有很多,具体的优势列举如以下几点1支持平台广泛QT应用程序接口与工具兼容于所有支持平台,让开发人员掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置,其支持的平台有QT/WINDOWS、QT/MACMACOSX、QT/X11LINUX,SOLARISHPUX,IRIX,AIX等。2封装多QT对不同平台的专门QPI进行了专门的封装(文件处理、网络等)。3面向对象QT具有模块设计和注重软件构件或元素的可重用性的特点。4构建支持QT提供信号和槽概念,这是一种类型安全的方法,它允许回调,并支持对象之间在互相不知道对方信息的情况下进行合作,这使得QT非常适合于真正的构建编程。5友好的联机帮助QT提供了大量的联机参考文档,有超文本HTML方式,也有UNIX帮助手册和补充说明,并且对于初学者,其中的指南将一步步介绍如何进行QT编程。6便利性由于QT是一种跨平台的GUI工具包,它对编程者隐藏了在处理不同窗口系统时潜在的问题,QT定义了一些类来隐藏在不同操作系统上不同处理方式下的细节问题。7用户自定义对象1信号1信号2对象3信号1插槽1对象2信号1插槽1插槽2对象4插槽1插槽2插槽3使用其他的一些工具包经常会遇到这样的一种情况,没有真正的适合需求的组件,声称自定义的组件对用户来说就像是一个黑匣子。而在QT中生成用户自定义的组件非常简单,而且易于修改组建的行为。8国际化QT为本地化应用提供了完全的支持,所有用户界面文本都可以基于消息翻译表被翻译成各国语言,QT还支持双字节16BIT国际字符标准。9丰富的API函数QT为专业应用提供了大量的函数,在QT的API中含有大约250个C类,大多数的类都是GUI专有的。10可用户化外观QT支持主题,基于QT的应用程序能够在WINDOWS外观、MOTIF外观,以及其他一些用户化主题之间切换。11完整的一套组件工具QT编程的基本模块称之为组件,组件是用户界面的组成部分,QT含有用来创建专业外观的用户界面所需要的所有组件。214QTCREATOR介绍QTCREATOR是全新的跨平台集成开发环境,为QT开发人员的需求量身定制,由于捆绑了最新QT库二进制软件包和附加的开发工具,并作为QTSDK的一部分,QTCREATOR在单独的安装程序内提供了进行跨平台QT开发所需的全部工具。QTCREATOR主要是为了帮助新QT用户更快速入门并运行项目,还可提高有经验的QT开发人员的工作效率。QT的功能和优势1使用强大的C代码编辑器可快速编写代码语言标识和代码完成功能;输入时进行静态代码校验以及提示样式;上下文相关的帮助;代码折叠;括号匹配和括号选择模式;高级编辑功能。2使用浏览器工具管理源代码集成了领先的版本控制软件,包括GIT、PERFORCE和SUBVERSION;开放式文件,无需知晓确切的名称或位置;搜索类和文件;跨不同位置或文件沿用符号;在头文件和源文件,或在声明和定义之间切换。3为QT跨平台开发人员的需求而量身定制集成了特定于QT的功能,如信号与槽;图示调试器,对QT类结构可一目了然;集成QTDESIGNER可视化布局和格式构建器;只需单击一下就可生成和运行QT项目。4使用拖放功能快速设计用户界面;定制WIDGET,或从标准WIDGET库中选择WIDGET;以本地外观快速预览格式。(5)通过界面原型生成C或JAVA代码将QTDESIGNER与VISUALSTUDIO或ECLIPSEIDE配合使用;使用QT信号与槽机制构建功能齐全的用户界面。215QT所支持的平台1嵌入式LINUX(EMBEDDEDLINUX)QTFOREMBEDDEDLINUX是用于嵌入式LINUX所支持设备的领先应用程序架构。您可以使用QT创建具有独特用户体验的具备高效内存效率的设备和应用程序。QT可以在任何支持LINUX的平台上运行。QT的直观API,让您只须少数几行代码便可以更短的时间实现更高端的功能。特点用于LINUX的紧凑的视窗系统;用于广泛的应用程序处理器的开发;移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;编译移除不常使用的组件与功能;利用系统资源并实现本地化性能;开发嵌入式设备犹如开发桌面系统一样轻松简单。QT除了提供所有工具以及API与类库,(如WEBKIT)外,QTFOREMBEDDEDLINUX还提供用于最优化嵌入式开发环境的主要组件。紧凑高效的视窗系统QWSQT构建在标准的API上,应用于嵌入式LINUX设备,并带有自己的紧凑视窗系统。基于QT的应用程序直接写入LINUX帧缓冲,解除了您对X11视窗系统的需求。具有减少内存消耗,占位更小,可利用硬件加速图形的优势,可编译移除不常使用的组件与功能等特点。虚拟帧缓冲QVFBQTFOREMBEDDEDLINUX提供一个虚拟帧缓冲器,可以采用点对点逐像素匹配物理设备显示。具有真实的测试构架,在桌面系统上嵌入式测试,模拟物理设备显示的宽度、高度与色深等特点。进程间通讯IPCIPC(进程间通讯)可以创建丰富的多应用程序用户体验。定义进程间通讯的两个主要概念即信道与消息。可以进程监听并向信道发送消息,任何时候只要监听到一个进程便可创建信道。扩展的字体格式QT支持嵌入式LINUX上的多种字体格式,包括TRUETYPE,POSTSCRIPTTYPE1与QT预呈现字体。QT扩展了UNICODE支持,包括构建时自动数据抽取和运行时自动更新。另外QT还提供定制字体格式的插件,允许在运行时轻松添加新字体引擎。应用程序间的字体共享功能可以提高内存效率。基本要求为开发环境LINUX内核24或更高;GCC版本33或更高;用于MIPSGCC版本34或更高。占用存储空间存储空间取决于配置,压缩后1741MB,未压缩3690MB。硬件平台易于载入任何支持带C编译器和帧缓冲器驱动LINUX的处理器。支持ARM,X86,MIPS,POWERPC。2MAC平台QT包括一套集成的开发工具,可加快在MAC平台上的开发。在编写QT时,并不需要去设想底层处理器的数字表示法、字节序或架构。要在APPLE平台上支持INTEL硬件,QT客户只需重新编辑其应用程序即可。3WINDOWS平台使用QT,只需一次性构建应用程序,无须重新编写源代码,便可跨多个WINDOWS操作系统的版本进行部署。QT应用程序支持WINDOWSVISTA、SERVER2003、XP、NT4、ME/98和WINDOWSCE。4LINUX/X11平台QT包括一套集成的开发工具,可加快在X11平台上的开发。QT由于是KDE桌面环境的基础,在各个LINUX社区人尽皆知。几乎KDE中的所有功能都是基于QT开发的,而且QT是全球社区成员用来开发成千上万的开源KDE应用程序的基础。5WINDOWSCE/MOBILEQT是用C开发的应用程序和用户界面框架。通过直观的API,您可以使用QT为大量的设备编写功能丰富的高性能应用程序。QT包括一套丰富的工具集与直观的API,意味着只须少数几行代码便可以更短的时间实现更高端的功能。主要特点硬件依存性极小;支持多数现有的WINDOWSCE配置;对于自定义的硬件配置亦轻松构建;移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;编译移除不常使用的组件与功能;利用系统资源并实现高性能;开发嵌入式设备尤如开发桌面系统一样轻松简单。QT除了提供所有工具以及API与类库外,QTFORWINDOWSCE还提供用于最优化嵌入式开发环境的附加功能。本地化和可定制的外观QT在使用时,可以支持WINDOWSMOBILE和WINDOWSCE两种样式。在运行时,QT应用程序将检测使用哪一种样式。采用QT样式表单,您只需要花费用于传统UI风格的少许时间和代码行,便可以轻松定制您的应用程序外观。特点基于HTML层叠式样式表CSS;适用于全部WIDGET;任何熟悉CSS技术的人员都可以定义复杂的样式。先进的文本布局引擎QTFORWINDOWSCE支持TRUETYPE和点阵字体。同时QT还支持扩展的UNICODE和从右至左的书写语言。QT的富文本引擎增加了新的功能用于复杂的文本布局,包括制表和路径追踪,以及环绕图形的文本。基本要求为开发环境MICROSOFTVISUALSTUDIO2005STANDARDEDITION或更高ACTIVEPERL。占用存储空间紧凑配置48MB,全配置84MB。操作系统WINDOWSCE5或更高,WINDOWSMOBILE5或更高。硬件平台支持ARM,X86,在SH4和MIPS上编译。6塞班平台(SYMBIAN)QT通过和S60框架的集成为SYMBIAN平台提供了支持。在最新版的QTSDK11中我们可以直接生成可以在塞班设备上运行的SIS文件。7MEEGO平台MAEMO6现更名为MEEGOQT是一个功能全面的应用程序和用户界面框架,用来开发MAEMO应用程序,也可跨各主要设备和桌面操作系统部署这些程序且无需重新编写源代码的。如果您在多数情况下开发适用于SYMBIAN、MAEMO或MEEGO平台的应用程序,可以使用免费LGPL授权方式的QT。QT将为诺基亚设备运行MEEGOHARMATTAN提供依托,并可为所有即将推出的MEEGO设备中的应用程序开发提供API,为QT开发人员提供了更多平台。不久,MEEGO设备就会完全支持X11QT。216QT类库模块化QTC类库提供一套丰富的应用程序生成块BLOCK,包含了生成高级跨平台应用程序所需的全部功能。1先进的图形用户界面(GUI)QT为您在桌面与嵌入式平台上开发先进的GUI应用程序,带来所有需要的功能。QT使用所支持平台的本地化图形API,充分利用系统资源并给予应用程序本地化的界面。从按钮和对话框到树形视图与表格都具有完整的控件(窗体),自动缩放,字体、语言与屏幕定位识别布局引擎,支持抗锯齿、矢量变形以及可缩放矢量图形SVG,具有样式API和窗体样式表,可完全自定义用户界面,支持嵌入式设备的硬件加速图形和多重显示功能2基于OPENGL与OPENGLES的3D图形OPENGL是一个标准的图形库,用于构建跨平台和支持硬件加速的高性能可视化应用程序。虽然OPENGL完美支持3D图形,但却不支持创建应用程序用户界面。QT通过与OPENGL的紧密集成解决了这一难题。在您的应用程序中轻松加入3D图形,在嵌入式LINUX与WINDOWSCE平台上使用OPENGLES和OPENGL绘画引擎利用系统资源实现最佳图形性能支持WINDOWS平台上的DIRECT3D。3多线程多线程编程是一个执行资源密集型操作而不会冻结应用程序用户界面的有效典范。QT的跨平台多线程功能简化了并行编程,另外它附加的同步功能可以更加轻松地利用多核架构。管理线程、数据和对象更加轻松,基于QT的信号与槽,实现跨线程类型安全的对象间通讯,高端API可以编译多线程程序而无须使用底端基元。4嵌入式设备的紧凑视窗系统QT构建在标准的API基础上,用于具有轻量级WINDOW系统的嵌入式LINUX设备。基于QT的应用程序直接写入LINUX帧缓冲,解除了您对X11视窗系统的需求。减少内存消耗,内存占用更小,可以编译移除不常使用的组件与功能,可以利用硬件加速图形,在桌面系统上的虚拟帧缓冲可用于嵌入式开发与调试。5对象间通讯在开发用户图形界面中,一个常见的、重复发生系统崩溃与问题的症结根源是如何在不同组件之间进行通信。对于该问题,QT的解决方案是信号与槽机制,即执行OBSERVER设计模式。我们可以简单理解为当特殊事件发生的时候,信号就被发出了,一个插槽就是一个函数,被称作特定信号的响应。信号与槽机制是类型安全的TYPESAFE,任意信号都可以连接任意或多个插槽,或跨多个线程,简化真正的组件编程。62D图形QT给您提供一个功能强大的2D图形画布,用以管理和集成大量的图形元素。高精度可视化大量元素,将窗体互动嵌入至图形场景中,支持缩放、旋转、动画与透视变换。7多媒体框架QT使用PHONON多媒体框架为众多的多媒体格式提供跨桌面与嵌入式操作系统的回放功能。PHONON可以轻松将音频与视频回放功能加入到QT应用程序当中,并且在每个目标平台上提取多媒体格式与框架。以平台独立的方式提供多媒体内容,从本地文件读取媒体或读取网络上的流媒体,提取MAC上QUICKTIME,WINDOWS上的DIRECTSHOW以及LINUX上的GSTREAMER。8WEBKIT集成QTWEBKIT集成,即QT集成了WEBKIT功能,WEBKIT是KDE项目下基于KHTML的开放源WEB浏览器引擎。目前APPLE,GOOGLE与NOKIA等公司使用QTWEBKIT集成。将WEB与本地内容和服务整合在单一的富应用程序当中,快速创建整合实时WEB内容与服务的应用程序,使用集成在本地代码中的HTML与JAVASCRIPT,完全控制跨平台的浏览器环境。9网络连接QT让您网络编程更简单,并支持跨平台网络编程。完整的客户/服务器插口提取,支持HTTP,FTP,DNS与异步HTTP11,无论HTML和XML或图象与媒体文件,它都可以存取所有类型的数据。10XMLQT为XML文件以及SAX和DOM协议的C实现,提供了一个流媒体文件读写器。同时QT还包含了XQUERY一个简单的类似SQL的查询语言,用于解析XML文件来选择和聚合所需要的XML元素,并且将它们转换成XML输出或其它格式的输出。仅需少数几行代码便可实现先进的XML查询,完全支持XQUERY10和XPATH20,在您自己的应用程序中从XML查询、抽取和转换数据。11脚本引擎QT包含一个完全集成ECMA标准的脚本引擎。QTSCRIPT提供QOBJECT集成,把QT的信号与槽机制整合成脚本,并且实现了C与脚本的集成。基于ECMA标准的脚本语言ECMASCRIPT3是JAVASCRIPT15的基础,为简化的对象间通讯使用QT的信号与槽机制开创新的契机将脚本与您的QT应用程序相集成。12数据库QT帮助您将数据库与您的QT应用程序无缝集成。QT支持所有主要的数据驱动,并可让您将SQL发送到数据库服务器,或者让QTSQL类自动生成SQL查询。支持所有主要的数据库驱动。以多种视图或数据识别表单方式显示数据。22FTP通信协议FTP基本简介FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层,即应用层,同时在传输层使用TCP,所以FTP客户在和服务器建立连接前就要经过一个被称作“三次握手“的过程。其连接是可靠的,传输是面向连接的,所以能为数据传输提供可靠的保证。FTP是一个8位的客户端服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或UNICODE一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向FTP服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。222FTP工作原理TP协议中,控制连接均由客户端发起,而数据连接有两种工作方式PORT方式和PASV方式。下面以PORT方式为例,如图1所示1FTP服务器运行FTP守护进程,等待用户的FTP请求。2用户运行FTP命令,请求FTP服务器为其服务3FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程交互,建立文件传输控制连接,使用TCP端口21。4用户输入FTP子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程FTPDATA,建立数据连接,使用TCP端口20进行数据传输。5本次子命令请求的数据传输完毕,拆除数据连接,结束FTPDATA进程。6用户继续输入FTP子命令,重复、的过程,直至用户输入QUIT命令,双方拆除控制连接,结束文件传输,结束FTP子进程。FTP客户端FTP服务器FTP请求控制连接(会话)(端口21)数据连接(传输)(端口20)图22FTP工作原理图223FTP的作用FTP的在文件传输中起到很重要的作用,具体的作用有以下几点1可以促进文件的共享(计算机程序或数据)2支持间接或者隐式的使用远程计算机3向用户屏蔽不同主机中各种文件存储系统的细节4可靠和高效的传输数据224FTP的使用FTP有两种使用模式主动和被动。主动模式要求客户端和服务端同时打开并且建统一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一个坚挺相应端口的进程,这样就可以绕开客户端安装了防火墙的问题。一个主动模式的FTP连接创建要遵循以下步骤客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为X),同时一个FTP进程连接至服务器的21号命令端口。此时,该TCP连接的来源地端口为客户端指定的随机端口X,目的地端口(远程端口)为服务器上的21号端口。客户端开始监听端口(X1),同时向服务器发送一个端口命令(通过服务器的21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。服务器打开20号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为20,远程数据目的地端口为(X1)。客户端通过本地的数据端口创建一个和服务器20号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。被动模式FTP为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。FORKFTPFTPDATAFTP守护进程控制进程FORK数据传输进程FTPDFTPFTPDATA当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N1024和N1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P1024),并发送PORTP命令给客户端。然后客户端发起从本地端口N1到服务器的端口P的连接用来传送数据。对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP1从任何大于1024的端口到服务器的21端口(客户端的初始化连接)2服务器的21端口到任何大于1024的端口(服务器响应到客户端的控制端口的连接)3从任何大于1024端口到服务器的大于1024端口(客户端初始化数据连接到服务器指定的任意端口)4服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口225FTP的缺点密码和文件内容都使用明文传输,可能产生不希望发生的窃听事件,因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量,这个问题,通过使用被动模式的FTP,得到了很大解决。服务器可能会被告知连接一个第三方计算机的保留端口,此方式在需要传输文件数量很多的小文件时,性能不好。FTP通信协议虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是“ANONYMOUS”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。FTP的效率较低从FTP服务器上检索一个文件,包含繁复的交换握手步骤客户端建立到FTP服务器端控制端口的TCPSOCKET链接,并等待TCP握手完成;客户端等待服务器端发送回执;客户端向服务器端发送用户名并等待响应;客户端向服务器端发送密码并等待响应;客户端向服务器端发送SYST命令并等待响应;客户端向服务器端发送TYPEI命令并等待响应;如果用户需要在服务器端切换目录,客户端仍然发送命令并等待响应;主动模式下,客户端需要发送PORT命令到服务器端,然后等待响应(被动模式与主动模式相反);建立数据传输链接(需要经过三次握手,建立一条TCPSOCKET连接);通过链接传输数据;客户端等待服务器端从控制连接发送2XX指令,以确保数据传输成功;客户端发送QUIT命令,并等待服务器响应。3需求分析设计目的FTP早已应用在网络的各个方面,比如我们在访问网络上的资源时,经常会遇到需要连接FTP服务器来下载,或者你制作了一个网站,想要将其上传至服务器,让大家能够访问它,这个时候就会用到FTP客户端。虽然平时使用WINDOWS自带的IE浏览器即可实现对FTP服务器的访问,但是IE只是个很粗糙的FTP客户端。IE浏览器在60以下的版本不支持PASV方式访问服务器,而且IE浏览器在登录FTP服务器的时候,无法查看返回的信息,在出错的时候,无法找到错误的原因,因此在使用上很不方便。现在大多数的FTP客户端软件都是收费版的,而且以英文版居多,使用上操作很复杂,目前流行的有COREFTP、ACEFTP、FTPVOYAGER等,但是大多数用户并不习惯使用这些软件。本文所设计的FTP客户端则适合大多数用户使用,界面设计的很简单,使用户可以一目了然,而且具备FTP客户端的基本功能,可以作为下载、上传文件的工具来使用。32完成目标本系统的开发要求采用C/S结构,选用所熟悉的开发工具及开发环境进行本系统的设计与开发。设计开发一个多功能FTP软件,本设计要求实现部分功能站点的连接、文件的上传与下载、文件的重命名、及站点连接功能;能实现站点的添加与管理;能实现相关个人的设置保存(比如站点名及用户登录口令等)。本毕业设计要求提供能实现文件传输及站点连接等功能的软件,要求软件具有操作简便、界面友好等特性;形成一个真正实用的、功能完善的FTP软件。33功能需求用户需求分析主要实现一个FTP客户端的图形化用户界面,该界面简洁,直观,友好,通过该界面可以保证实现文件的传输和存储。通过输入服务器的地址、用户名和密码之后可以实现对FTP主机的远程登录功能。登录成功后可以浏览服务器下的文件列表信息,可以实现本地文件的上传的功能,可以对FTP主机文件进行下载、上传等相关文件的操作。332功能需求分析具体的功能需求分析分为以下几点1连接登陆的需求可以通过用户提供的一些信息来实现登陆,输入IP地址、用户名和密码端口号等一些信息来连接所选择的服务器,点击相应的按钮进行连接,如果连接成功则提示连接成功的信息,如果连接失败,则提示连接失败的信息。2浏览文件的需求登陆成功后,可以查看服务器上的一些相关的信息,包含文件的目录、文件的名称和文件的大小、文件的修改日期等等一些信息,还可以改变当前文件的目录。3实现文件的上传与下载的功能的需求该需求是与服务器连接成功后,可以实现从服务器上面下载文件到本地指定的目录下,同时也可以将本地的文件上传到服务器上面指定的目录下面。4可以显示当前状态的功能的需求在选定好文件进行下载和上传时可以查看当前的状态是否上传或者下载成功,还可以显示当前所进行的是什么操作,并且可以看到该操作是否成功。5可以选择保存路径的功能的需求能够选择要下载或者上传的文件,并且能够选择下载的文件保存在本地的路径,也可以选择要上传的文件保存到服务器的路径。333性能需求整个系统操作应当简便,界面友好,运行稳定,执行速度快。系统本身运行对计算机硬件平台和操作平台要求适中。34环境需求操作系统WINDOWS系统网络服务器FTP开发平台QT435界面设计需求为了使用户能够方便的使用FTP客户端,在设计中我将数据输入和信息显示整合在一个页面中,全部客户端仅包含一个主要的窗口,窗口中分别有以下五个界面1数据输入界面用来让用户输入服务器地址,用户名,口令,端口号等一些信息。2服务器文件信息显示界面主要用来显示服务器下存储的文件,方便用户清楚的了解服务器中存储了哪些文件,并且方便用户选择需要的文件进行下载操作。3本地文件信息显示界面主要用来显示本地下存储的文件,方便用户清楚的了解本地中存储了哪些文件,还可以切换目录,并且方便用户进行选择要上传的文件。4上下载队列显示界面显示正在下载或上传的文件,并且可以选择将文件上传或者下载到哪个目录下。5信息显示界面显示当前连接信息和上传下载是否成功信息,显示当前进行的操作是否成功。4软件总体分析与设计系统模块设计上传和下载的功能主要就是完成对文件的传输,是整个系统最核心的部分。而在QT中,QFTP类为我们实现了FTP协议的客户端所需要的功能,这样就节约了大量的开发时间。本设计将FTP客户端分为FTP客户端的图形界面模块、登录模块、服务器浏览模块、本地浏览模块,上传模块、下载模块和信息提示模块七个模块,具体如图41所示。图41系统模块图界面模块该模块是按照用户的需求完成FTP客户端的基本界面的设计,界面包括连接服务器的界面,还有可以浏览本地文件目录和服务器端文件的目录,还可以显示相关操作的提示信息的界面,该模块主要完成FTP客户端的操作界面简洁、直观。登录模块该模块主要实现的是可以通过用户提供的一些信息来实现登录服务器的功能,用户可以通过输入IP地址、用户名和密码端口号等信息来连接所选择的服务器,如果连接成功则提示连接成功的信息,如果连接失败,则提示连接失败的信息。服务器端目录浏览模块该模块主要完成的是登陆成功后,可以查看服务器上的文件的一些相关的信息,包含文件的目录、文件的名称和文件的大小、文件的修改日期等等一些信息,还可以改变当前文件的目录。该模块可以使用户很方便的进行文件的下载操作。本地目录浏览模块该模块主要完成的是使用户可以浏览本地目录文件的一些信息,并且可以切换到任何目录,可以查看文件的名称,文件的大小,文件的修改日期,文件的类型等信息。该模块主要是可以方便用户进行文件的上传操作。下载传模块该模块是在连接用户指定的FTP服务器后实现的,获取服务器目录下的文件列表,当用户选择项目为文件时,点击下载就可以下载用户所需要的文件。依靠FTP协议的支持,用户下载的文件没有类型和大小限制,即用户可已选择任何自己想要下载的文件,通过FTP客户端进行下载。上传模块用户可以自行选择本机上存储的文件,上传至FTP服务器。在用户选择存储在服务器的位置后,点击上传,选择所需要上传的文件,即可将文件上传至服务器。信息提示模块该模块可以提示用户进行操作的任何信息,从该模块中可以看到用户的操作是否成功。可以提示连接服务器是否成功,进行上传下载的操作是否成功,还可以看到当前所进行的是什么操作,当前所进行的操作是否成功。FTP客户端界面模块登录模块本地目录浏览模块上传模块下载模块服务器目录浏览模块信息提示模块42详细设计客户端连接流程图运行客户端后,首先是连接服务器,需要输入服务器IP地址及用户名和密码,点击连接按钮后开始连接服务器,下图为客户端连接流程图。开始用户输入服务器地址、用户名密码及端口查询服务器判断在信息显示块显示连接失败N在信息显示模块显示连接成功获取服务器文件列表刷新服务器文件显示模块信息Y结束结束图42客户端连接流程图连接的结果有两种,即图中显示的连接成功和连接失败,在信息显示模块中会显示相应的成功或者失败的信息。422上传子模块流程图当用户点击上传按钮后,用户可以选择需要上传到服务器段的文件,并指定要进行上传到服务器端的位置,然后将本机上的文件上传至FTP服务器,下图为上传子模块流程图。开始选择要上传的文件点击上传按钮新建一个上传任务上传是否成功在信息显示模块中显示上传失败N在信息显示模块中显示上传成功更新服务器文件列表结束Y结束图43上传子模块流程图上传的结果有两种可能,一种是上传失败,另一种是上传成功,失败时会有相关的提示,提示用户上传失败,原因可能是权限问题,如果文件成功的上传,则会有信息提示上传成功

温馨提示

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

评论

0/150

提交评论