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

下载本文档

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

文档简介

1、嵌入式FTP客户端的设计与实现摘 要FTP即文件传输协议,它是目前Internet上使用的最广泛的文件传送协议。FTP是TCP/IP网络和Internet上最早使用的协议之一。用户可以通过自己的PC机与所有运行FTP协议的服务器相连,访问服务器上的信息。FTP客户端可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录等功能。随着嵌入式系统的广泛应用,嵌入式系统对图形用户界面的需求也越来越重要, Qt是一个跨平台的C+图形用户界面应用程序框架,可以在众多嵌入式场合发挥很好的作用。本课题是基于Qt来设计的FTP客户端,该客户端实现了给出Ip地址进行FTP登录,并能查看服务端的文件信息

2、列表,从而对指定文件的上传和下载功能,具有一定的实用性和方便性。关键词:FTP;跨平台;Qt;上传;下载 The Design And Implementation Of Embedded FTP ClientAbstractFile Transfer Protocol,which is the most widely used protocol for transmission at present.FTP is one of the earliest protocol used in TCP/IP network and Internet.Clients can link other FT

3、P servers in the word by their computers and visit large amount of informations. FTP client can issue commands to the server to download files,upload files, create or change directories on the server.Along with the embedded system, the graphical user interface is more and more important. Qt is a cro

4、ss platform C+ graphical user interface application framework, can play a good role in many embedded applications. This system is to design a FTP client based on Qt, this client to achieve produces the computer Ip address for Ftp login, check server-side file information list, and realize to the spe

5、cified file download, has a certain practicality and convenience. Keywords: FTP protocol;cross-platform;Qt;File Upload; File Dowload目 录 TOC o 1-3 h z u HYPERLINK l _Toc6328 摘 要 PAGEREF _Toc6328 i HYPERLINK l _Toc30063 Abstract PAGEREF _Toc30063 ii HYPERLINK l _Toc22424 1 选题的目的和意义 PAGEREF _Toc22424 1

6、 HYPERLINK l _Toc21473 1.1 选题背景 PAGEREF _Toc21473 1 HYPERLINK l _Toc5038 1.2 目的和意义 PAGEREF _Toc5038 1 HYPERLINK l _Toc8061 1.3 当前发展 PAGEREF _Toc8061 2 HYPERLINK l _Toc7902 1.4 所做工作 PAGEREF _Toc7902 2 HYPERLINK l _Toc27396 2 相关基础技术与开发平台 PAGEREF _Toc27396 3 HYPERLINK l _Toc20391 2.1 QT开发工具简介 PAGEREF _

7、Toc20391 3 HYPERLINK l _Toc3761 2.1.1 Qt的主要特性 PAGEREF _Toc3761 3 HYPERLINK l _Toc29225 2.1.2 Qt编程机制简介 PAGEREF _Toc29225 3 HYPERLINK l _Toc28587 2.1.3 Qt的优势 PAGEREF _Toc28587 5 HYPERLINK l _Toc8785 2.1.4 Qt creator介绍 PAGEREF _Toc8785 6 HYPERLINK l _Toc24586 2.1.5 Qt所支持的平台 PAGEREF _Toc24586 6 HYPERLIN

8、K l _Toc24652 2.1.6 Qt类库 PAGEREF _Toc24652 8 HYPERLINK l _Toc17392 2.2 FTP通信协议 PAGEREF _Toc17392 10 HYPERLINK l _Toc31156 2.2.1 FTP基本简介 PAGEREF _Toc31156 10 HYPERLINK l _Toc19593 2.2.2 FTP工作原理 PAGEREF _Toc19593 10 HYPERLINK l _Toc29977 2.2.3 FTP的作用 PAGEREF _Toc29977 11 HYPERLINK l _Toc24558 2.2.4 FT

9、P的使用 PAGEREF _Toc24558 11 HYPERLINK l _Toc23246 2.2.5 FTP的缺点 PAGEREF _Toc23246 12 HYPERLINK l _Toc15681 3 需求分析 PAGEREF _Toc15681 13 HYPERLINK l _Toc19748 3.1 设计目的 PAGEREF _Toc19748 13 HYPERLINK l _Toc9847 3.2 完成目标 PAGEREF _Toc9847 13 HYPERLINK l _Toc13178 3.3 功能需求 PAGEREF _Toc13178 13 HYPERLINK l _T

10、oc26030 3.3.1 用户需求分析 PAGEREF _Toc26030 13 HYPERLINK l _Toc5834 3.3.2 功能需求分析 PAGEREF _Toc5834 13 HYPERLINK l _Toc29189 3.3.3 性能需求 PAGEREF _Toc29189 14 HYPERLINK l _Toc919 3.4 环境需求 PAGEREF _Toc919 14 HYPERLINK l _Toc22599 3.5 界面设计需求 PAGEREF _Toc22599 14 HYPERLINK l _Toc9329 4 软件总体分析与设计 PAGEREF _Toc932

11、9 15 HYPERLINK l _Toc28146 4.1 系统模块设计 PAGEREF _Toc28146 15 HYPERLINK l _Toc8549 4.2 详细设计 PAGEREF _Toc8549 16 HYPERLINK l _Toc18774 4.2.1 客户端连接流程图 PAGEREF _Toc18774 16 HYPERLINK l _Toc29712 4.2.2 上传子模块流程图 PAGEREF _Toc29712 17 HYPERLINK l _Toc4075 4.2.3 下载子模块流程图 PAGEREF _Toc4075 18 HYPERLINK l _Toc747

12、4 4.3 系统设计与程序的实现 PAGEREF _Toc7474 19 HYPERLINK l _Toc29704 4.3.1 界面实现部分 PAGEREF _Toc29704 19 HYPERLINK l _Toc20467 4.3.2 模块功能的实现 PAGEREF _Toc20467 20 HYPERLINK l _Toc17826 5 系统运行及测试 PAGEREF _Toc17826 26 HYPERLINK l _Toc2103 5.1 环境的搭建 PAGEREF _Toc2103 26 HYPERLINK l _Toc21952 5.1.1 安装Qt Creator和Qt 框架

13、 PAGEREF _Toc21952 26 HYPERLINK l _Toc27832 5.1.2 修改系统的环境变量 PAGEREF _Toc27832 27 HYPERLINK l _Toc10947 5.1.3 成功安装后的Qt界面 PAGEREF _Toc10947 28 HYPERLINK l _Toc8893 5.2 系统运行 PAGEREF _Toc8893 28 HYPERLINK l _Toc13233 5.2.1运行前分析 PAGEREF _Toc13233 28 HYPERLINK l _Toc10398 5.2.2主要功能运行 PAGEREF _Toc10398 29

14、HYPERLINK l _Toc23338 5.2.3 其他功能 PAGEREF _Toc23338 32 HYPERLINK l _Toc13700 5.3 系统测试 PAGEREF _Toc13700 34 HYPERLINK l _Toc7852 5.3.1 QT Creator调试器 PAGEREF _Toc7852 34 HYPERLINK l _Toc20479 5.3.2 QT调试方法 PAGEREF _Toc20479 34 HYPERLINK l _Toc13651 5.3.3 出现的错误及解决方案 PAGEREF _Toc13651 35 HYPERLINK l _Toc6

15、756 5.4 小结 PAGEREF _Toc6756 35 HYPERLINK l _Toc26934 总结 PAGEREF _Toc26934 36 HYPERLINK l _Toc2842 参考文献 PAGEREF _Toc2842 38 HYPERLINK l _Toc8465 致 谢 PAGEREF _Toc8465 39 HYPERLINK l _Toc14389 外文原文 PAGEREF _Toc14389 40 HYPERLINK l _Toc17374 中文翻译 PAGEREF _Toc17374 55选题的目的和意义 选题背景现如今人类已经进入了21世纪,科学技术的突飞猛进

16、的发展,知识经济的初见端倪,和Internet技术的迅猛发展与普及,推动了整个世界范围的信息的传输和信息的交流。FTP协议是Internet上最早的应用也是最广泛的应用,直到目前为止它仍然是最重要的同时也是最基本的应用之一,在互联网刚开始发展的时候曾经占据整个互联网通信量的三分之一。FTP主要解决了在不同操作系统下处理文件格式的不兼容的问题,如果用户想使用其他计算机上的文件,最理想的办法就是把它复制到自己的计算机当中,方便在自己的计算机中使用。FTP客户端正是完成这项工作的工具,成千上百万的数据、资料分布在世界各地,有了FTP客户端之后,只要轻点几下鼠标,就可以轻而易举的获得你想要的任何资料。

17、在众多的网络应用中,FTP有着非常重要的地位,在Internet中一个十分重要的就是资源,而各种各样的资源大多数都是放在FTP服务器中的,为了获得这些资源,我们必须使用FTP客户端软件。本毕业设计将介绍FTP客户端系统的设计和开发工作,因此,文章涵盖以下三方面的内容:1.基础技术的介绍;2.文件传输系统的详细需求;3.介绍系统的具体实现;4.对最终系统进行运行测试。通过这次课题,对整个开发过程有深入的了解,提高实践能力。FTP将在未来的很长时间里作为主要的文件传输协议,使用前景仍然宽广,功能会更加强大。 目的和意义 FTP协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP

18、网络和INTERNET上最早使用的协议之一。尽管World Wide Web(WWW)已经替代了FTP的大多数功能,FTP仍然是通过Internet把文件从客户端复制到服务器上的一种很实用的途径。FTP客户机可以给服务器发出相应的命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件大多是使用的命令行操作,但是后来有了像CUTEFTP这样的图形界面软件,使得FTP传输变得非常方便易学。主要使用它进行“上载”。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名FTP服务器”。

19、FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。选择此课题作为毕业设计,是希望将学习累计的知识用于实践,开发出该系统的各项功能,使用户很简单的就能登录FTP服务器、上传下载数据等功能的需求。与此同时,在开发中学会发现解决问题,提高软件开发能力,为今后的工作、学习、项目开发累计实践经验。所以选择了使用Qt来开发实现文件传输功能的FTP客户

20、端。 当前发展目前为止已经有许多互联网站点已经建立了可供所有人都能访问的资料库,并且这些资料都可以被通过使用FTP来获取。匿名的FTP使得用户有机会存取到世界上最大的信息库,这个信息库都是慢慢日积月累起来的,并且还在有不断的增长的趋势,永远都不会关闭,涉及面也很广,几乎涉及到所有的主题。而且,这一切都是免费的提供每个人下载和使用的。Internet之所以能延续到今天,是因为人们使用通过标准协议提供标准服务的程序。由于FTP提供的文件传输是将一个完整的文件从一个系统复制到另一个系统中。要使用FTP,就需要有登陆服务器的注册账号,或者匿名FTP的服务器来使用。与Telnet类似,FTP最早的设计用

21、于两台不同的主机,这两个主机可能运行在不同的操作系统下、使用不同的文件结构、并可能使用不同的字符集。但不同的是,Telnet获得异构型是强制两端都采用同一标准:使用7比特ASCII码的NVT。而FTP是采用另一种方法来处理不同系统间的差异:FTP 支持有限数量的文件类型如ASCII文件,二进制文件等等和文件结构(面向字节流或记录)。 所做工作目前在国内外基于FTP的网络通信仍然是Internet上文件传输的通用的方法,就如同当初FTP刚出现的时候,FTP并没有发生多大的变化,但是在Internet迅猛的发展的形势下,其安全问题还是日益突出出来。但是FTP还是非常的流行,大部分的网站以及论坛等等

22、涉及到用户下载的网站都提供了FTP服务,特别是校园中也可以利用FTP服务器来使身处校园中的每个人都可以通过FTP来下载或共享文件,这使得每个人都能享受到网络的便捷。在现如今网络上有许多的FTP客户端类的软件,但是其中大部分都是由于其界面复杂,操作繁琐,不被大多数用户接受,为了更好的利用网络资源,为了方便用户使用FTP,我设计了一个非常简单容易使用用的FTP 客户端。相关基础技术与开发平台 QT开发工具简介Qt的主要特性Qt是一个跨平台的C+图形用户界面库,是由挪威TrollTech公司开发,目前包括Qt/X11、基于Framebuffer的Qt/Embedded、快速开发工具Qt Design

23、er以及国际化工具Qt Linguist等。人们所熟知的Linux下面的KDE环境就是基于Qt开发而成的。Qt支持Unix和Linux系统以及Windows系统。Qt的主要特点有: 面向对象, 很容易扩展, 并且允许真正的组件编程; Qt对各个模块进行了良好的封装,使各模块可重用性较好;优良的跨平台特性,使用Qt类编写的程序可以实现 “一次编码,到处编译”,极大的降低了跨平台开发的难度;构件支持,对于对象间通信,Qt没有采用函数回调的方法,而是采用了一种全新并且可选的被称为“信号与槽” 的对象间通信机制,通过一个对象信号的发射,另一个槽函数的响应,使各个对象之间的通信安全而且高效。 Qt的这些

24、特点使它非常适合于真正的构件编程, 同时使各个组件之间的协同工作变得十分简单,并且 Qt是直接基于 Xlib的,不依赖 Motif 工具包, 所以它的执行效率比一般的基于平台的代码的执行效率要高。Qt类库是一个拥有超过400个的C+类,同时不断扩展的库。它封装了用于端到端应用程序开发所需要的所有基础结构。优秀的Qt应用程序接口包括成熟的对象模型,内容丰富的集合类,图形用户界面编程与布局设计功能,数据库编程,网络,XML,国际化,OpenGL集成等。Qt设计者是一个功能强大的GUI布局与窗体构造器,能够在所有支持平台上,以本地化的视图外观与认知,快速开发高性能的用户界面。Qt语言家是一套用来消除

25、国际化工作流程所带来障碍的工具。使用Qt语言家,开发小组可把应用程序的翻译转换外包给非技术性翻译人员,从而可增加精确度,大大加快本地化处理过程。Qt助手是一个完全可自定义,重新分配的帮助文件或文档浏览器,它可与基于Qt的应用程序运行。使用Qt助手,开发小组同样能够很大程度上加快文档的处理过程。Qt编程机制简介信号/槽机制是Qt的一个最重要的特征并且也许是Qt与其它工具包的最不相同的部分。在图形用户界面编程中,我们经常希望一个窗口部件的一个变化被通知给另一个窗口部件。更一般地,我们希望任何一类的对象可以和其它对象进行通讯。较老的工具包使用一种被称作回调的通讯方式来实现同一目的。回调是指一个函数的

26、指针,所以如果你希望一个处理函数通知你一些事件,你可以把另一个函数(回调)的指针传递给处理函数。处理函数在适当的时候调用回调。回调有两个主要缺点。首先他们不是类型安全的。我们从来都不能确定处理函数使用了正确的参数来调用回调。因此容易造成进程崩溃,另外一个问题是,回调这种方式紧紧的绑定了图形用户接口的功能元素,因而很难把开发进行独立的分类。Qt的信号与槽机制是不同的。Qt的信号与槽均以函数形式出现,Qt的窗口部件有很多预定义的信号,但我们也可以通过继承来加入我们自己的信号。槽就是一个可以被调用处理特定信号的函数。Qt的窗口部件有很多预定义的槽,但是通常的习惯是你可以加入自己的槽,这样你就可以处理

27、你所感兴趣的信号。我们可以用connect()函数对需要的信号和槽进行连接。当对象的内部状态发生改变,信号就被发射。从某种意义上讲,它们也许对外面的世界感兴趣。这就是所有的对象通讯时所做的一切。它不知道也不注意无论有没有东西接收它所发射的信号。当一个信号被发射,它所连接的槽会被立即执行,就像一个普通函数调用一样(见图2-1)。信号/槽机制完全不依赖于任何一种图形用户界面的事件回路。当所有的槽都返回后发射的信号也将返回。信号与插槽机制并不要求类之间互相知道细节,这样就可以相对容易的开发出代码可高重用的类(Matthias Dalheimer,2002)。信号和槽的机制是类型安全的:一个信号的签名

28、必须与它的接收槽的签名相匹配。(实际上一个槽的签名可以比它接收的信号的签名少,因为它可以忽略额外的签名。)因为签名是一致的,编译器就可以帮助我们检测类型不匹配。它以警告的方式报告类型错误,而不会使系统产生崩溃。信号和槽是宽松地联系在一起的:一个发射信号的类不用知道也不用注意哪个槽要接收这个信号(Johan Thelin,2007)。Qt的信号和槽的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。信号和槽可以使用任何数量、任何类型的参数。它们是完全类型安全的:不会再有回调核心转储(core dump)。你可以把许多信号和你所希望的单一槽相连,并且一个信号也可

29、以和你所期望的许多槽相连。把一个信号和另一个信号直接相连也是可以的。(这时,只要第一个信号被发射时,第二个信号立刻就被发射。)总体来看,信号和槽构成了一个强有力的组件编程机制。如果一个类要使用信号与槽机制,它就必须是从QObject或QObject的子类继承,而且类的定义必须加上Q_OBJECT宏。signals、slots和emit是Qt特有的关键字,分别用来表示信号、槽、和发送信号,移除这些关键字和预处理程序,就可以使用标准的C+编译器。槽同其他函数一样也具有访问权限,只是槽的访问权限决定了谁可以和它相连,如一个public slots:包含了任何信号都可以相连的槽(Andrew Krau

30、se,2007) 。一个protected slots:包含了只有这个类和它的子类的信号才能连接的槽。这就是说这些槽只是类的实现的一部分,而不是它和外界的接口。 一个private slots:包含了只有这个类本身的信号可以连接的槽,甚至它的子类都没有获得连接的权利。 对象 1信号 1信号 2 connect(对象1,信号1,对象2,插槽1) connect(对象1,信号1,对象2,插槽2)对象 2信号 1插槽 1插槽 2 对象 3信号 1插槽 1对象 4插槽 1插槽 2插槽 3connect(对象1,信号2,对象4,插槽1)connect(对象3,信号1,对象4,插槽3)图2-1 信号和槽的

31、连接原理图Qt的优势作为嵌入式图形界面的开发工具,Qt的优势有很多,具体的优势列举如以下几点:1.支持平台广泛Qt应用程序接口与工具兼容于所有支持平台,让开发人员掌握一个应用程序接口,便可执行与平台非相关的应用开发与配置,其支持的平台有:QT/Windows、QT/Mac(Mac OS X)、QT/X11(Linux,SolarisHP-UX,IRIX,AIX)等。2.封装多Qt对不同平台的专门QPI进行了专门的封装(文件处理、网络等)。3.面向对象Qt具有模块设计和注重软件构件或元素的可重用性的特点。4.构建支持Qt提供信号和槽概念,这是一种类型安全的方法,它允许回调,并支持对象之间在互相不

32、知道对方信息的情况下进行合作,这使得Qt非常适合于真正的构建编程。5.友好的联机帮助Qt提供了大量的联机参考文档,有超文本HTML方式,也有Unix帮助手册和补充说明,并且对于初学者,其中的指南将一步步介绍如何进行Qt编程。6.便利性由于Qt是一种跨平台的GUI工具包,它对编程者隐藏了在处理不同窗口系统时潜在的问题,Qt定义了一些类来隐藏在不同操作系统上不同处理方式下的细节问题。7.用户自定义使用其他的一些工具包经常会遇到这样的一种情况,没有真正的适合需求的组件,声称自定义的组件对用户来说就像是一个黑匣子。而在Qt中生成用户自定义的组件非常简单,而且易于修改组建的行为。8.国际化Qt为本地化应

33、用提供了完全的支持,所有用户界面文本都可以基于消息翻译表被翻译成各国语言,Qt还支持双字节16bit国际字符标准。9.丰富的API函数Qt为专业应用提供了大量的函数,在Qt的API中含有大约250个C+类,大多数的类都是GUI专有的。10.可用户化外观Qt支持主题,基于Qt的应用程序能够在Windows外观、Motif外观,以及其他一些用户化主题之间切换。11.完整的一套组件工具Qt编程的基本模块称之为组件,组件是用户界面的组成部分,Qt含有用来创建专业外观的用户界面所需要的所有组件。Qt creator介绍Qt creator是全新的跨平台集成开发环境,为QT开发人员的需求量身定制,由于捆绑

34、了最新QT库二进制软件包和附加的开发工具,并作为QT SDK的一部分,Qt creator在单独的安装程序内提供了进行跨平台QT开发所需的全部工具。Qt creator主要是为了帮助新QT用户更快速入门并运行项目,还可提高有经验的QT开发人员的工作效率。QT的功能和优势: 1.使用强大的C+代码编辑器可快速编写代码:语言标识和代码完成功能;输入时进行静态代码校验以及提示样式;上下文相关的帮助;代码折叠;括号匹配和括号选择模式;高级编辑功能。 2.使用浏览器工具管理源代码:集成了领先的版本控制软件,包括Git、Perforce和Subversion;开放式文件,无需知晓确切的名称或位置;搜索类和

35、文件;跨不同位置或文件沿用符号;在头文件和源文件,或在声明和定义之间切换。 3.为QT跨平台开发人员的需求而量身定制:集成了特定于QT的功能,如信号与槽;图示调试器,对QT类结构可一目了然;集成QT Designer可视化布局和格式构建器;只需单击一下就可生成和运行QT项目。 4.使用拖放功能快速设计用户界面;定制widget,或从标准widget库中选择widget;以本地外观快速预览格式。 (5)通过界面原型生成C+或Java代码:将QT Designer与Visual Studio或Eclipse IDE配合使用;使用QT信号与槽机制构建功能齐全的用户界面。Qt所支持的平台1.嵌入式 L

36、inux(Embedded Linux) Qt for Embedded Linux 是用于嵌入式 Linux 所支持设备的领先应用程序架构。您可以使用 Qt 创建具有独特用户体验的具备高效内存效率的设备和应用程序。Qt 可以在任何支持 Linux 的平台上运行。Qt 的直观 API,让您只须少数几行代码便可以更短的时间实现更高端的功能。 特点:用于Linux 的紧凑的视窗系统;用于广泛的应用程序处理器的开发;移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;编译移除不常使用的组件与功能;利用系统资源并实现本地化性能;开发嵌入式设备犹如开发桌面系统一样轻松简单。 Qt 除了提供所有工具以及

37、API 与 类库 ,( 如 WebKit ) 外,Qt for Embedded Linux 还提供用于最优化嵌入式开发环境的主要组件。 紧凑高效的视窗系统 (QWS):Qt 构建在标准的 API 上,应用于嵌入式 Linux 设备,并带有自己的紧凑视窗系统。基于 Qt 的应用程序直接写入Linux 帧缓冲,解除了您对 X11 视窗系统的需求。具有减少内存消耗,占位更小,可利用硬件加速图形的优势,可编译移除不常使用的组件与功能等特点。 虚拟帧缓冲 (QVFb):Qt for Embedded Linux 提供一个虚拟帧缓冲器,可以采用点对点逐像素匹配物理设备显示。具有真实的测试构架,在桌面系统

38、上嵌入式测试,模拟物理设备显示的宽度、高度与色深等特点。 进程间通讯 (IPC):IPC (进程间通讯)可以创建丰富的多应用程序用户体验。定义进程间通讯的两个主要概念即:信道与消息。可以进程监听并向信道发送消息,任何时候只要监听到一个进程便可创建信道。 扩展的字体格式:Qt 支持嵌入式 Linux 上的多种字体格式,包括:TrueType, Postscript Type1 与 Qt 预呈现字体。Qt 扩展了Unicode 支持,包括:构建时自动数据抽取和运行时自动更新。另外Qt还提供定制字体格式的插件,允许在运行时轻松添加新字体引擎。应用程序间的字体共享功能可以提高内存效率。基本要求为开发环

39、境:Linux 内核 2.4 或更高;GCC 版本 3.3 或更高;用于 MIPS GCC 版本 3.4. 或更高。占用存储空间:存储空间取决于配置,压缩后: 1.7 4.1 MB,未压缩: 3.6 9.0 MB 。硬件平台:易于载入任何支持带 C+ 编译器和帧缓冲器驱动 Linux 的处理器。支持 ARM, x86, MIPS, PowerPC 。2.Mac平台 Qt 包括一套集成的开发工具,可加快在 Mac 平台上的开发。在编写 Qt 时,并不需要去设想底层处理器的数字表示法、字节序或架构。要在 Apple 平台上支持 Intel 硬件,Qt 客户只需重新编辑其应用程序即可。 3.Wind

40、ows平台 使用 Qt,只需一次性构建应用程序,无须重新编写源代码,便可跨多个 Windows 操作系统的版本进行部署。Qt 应用程序支持 Windows Vista、Server 2003、XP、NT4、Me/98 和 Windows CE。 4.Linux/X11平台 Qt 包括一套集成的开发工具,可加快在 X11 平台上的开发。Qt 由于是 KDE 桌面环境的基础,在各个 Linux 社区人尽皆知。几乎 KDE 中的所有功能都是基于 Qt 开发的, 而且 Qt 是全球社区成员用来开发 成千上万的开源 KDE 应用程序的基础。5.Windows CE/Mobile Qt 是用 C+ 开发的

41、应用程序和用户界面框架。通过直观的 API,您可以使用 Qt 为大量的设备编写功能丰富的高性能应用程序。Qt 包括一套丰富的工具集与直观的API,意味着只须少数几行代码便可以更短的时间实现更高端的功能。 主要特点:硬件依存性极小;支持多数现有的 Windows CE 配置;对于自定义的硬件配置亦轻松构建;移植桌面代码至嵌入式平台,或通过重新编译,反之亦然;编译移除不常使用的组件与功能;利用系统资源并实现高性能;开发嵌入式设备尤如开发桌面系统一样轻松简单。Qt 除了提供所有 工具 以及 API 与 类库 外,Qt for Windows CE 还提供用于最优化嵌入式开发环境的附加功能。 本地化和

42、可定制的外观:Qt 在使用时,可以支持 Windows Mobile 和 Windows CE 两种样式。 在运行时,Qt 应用程序将检测使用哪一种样式。 采用 Qt 样式表单,您只需要花费用于传统 UI 风格的少许时间和代码行,便可以轻松定制您的应用程序外观。特点:基于HTML 层叠式样式表 (CSS);适用于全部 widget;任何熟悉 CSS 技术的人员都可以定义复杂的样式。 先进的文本布局引擎:Qt for Windows CE 支持 TrueType 和点阵字体。同时 Qt 还支持扩展的 Unicode 和从右至左的书写语言。Qt 的富文本引擎增加了新的功能用于复杂的文本布局,包括制

43、表和路径追踪,以及环绕图形的文本。 基本要求为开发环境: Microsoft Visual Studio 2005 (Standard Edition) 或更高ActivePerl。占用存储空间:紧凑配置 4.8 MB,全配置 8.4 MB。操作系统:Windows CE 5 或更高,Windows Mobile 5 或更高。硬件平台:支持 ARM, x86,(在 SH4 和 MIPS 上编译)。6.塞班平台(Symbian) Qt 通过和S60 框架的集成为 Symbian 平台提供了支持。在最新版的Qt SDK 1.1中我们可以直接生成可以在塞班设备上运行的sis文件。 7.MeeGo平台

44、 (Maemo 6现更名为 MeeGo) Qt 是一个功能全面的应用程序和用户界面框架,用来开发Maemo 应用程序,也可跨各主要设备和桌面操作系统部署这些程序且无需重新编写源代码的。 如果您在多数情况下开发适用于 Symbian、Maemo 或 MeeGo 平台的应用程序,可以使用免费 LGPL 授权方式的 Qt。 Qt 将为诺基亚设备运行 MeeGo (Harmattan) 提供依托,并可为所有即将推出的 MeeGo 设备中的应用程序开发提供 API,为 Qt 开发人员提供了更多平台。不久,MeeGo 设备就会完全支持 (X11) Qt 。Qt类库模块化 Qt C+ 类库提供一套丰富的应用

45、程序生成块 (block),包含了生成高级跨平台应用程序所需的全部功能。1.先进的图形用户界面(GUI):Qt为您在桌面与嵌入式平台上开发先进的GUI应用程序,带来所有需要的功能。Qt使用所支持平台的本地化图形API,充分利用系统资源并给予应用程序本地化的界面。 从按钮和对话框到树形视图与表格都具有完整的控件(窗体),自动缩放,字体、语言与屏幕定位识别布局引擎,支持抗锯齿、矢量变形以及可缩放矢量图形 (SVG) ,具有样式API和窗体样式表,可完全自定义用户界面,支持嵌入式设备的硬件加速图形和多重显示功能2.基于OpenGL 与OpenGL Es的3D图形:OpenGL 是一个标准的图形库,用

46、于构建跨平台和支持硬件加速的高性能可视化应用程序。虽然OpenGL完美支持3D图形,但却不支持创建应用程序用户界面。Qt通过与OpenGL 的紧密集成解决了这一难题。 在您的应用程序中轻松加入3D图形,在嵌入式Linux 与Windows CE 平台上使用OpenGL ES和OpenGL绘画引擎利用系统资源实现最佳图形性能支持Windows 平台上的Direct3D。3多线程:多线程编程是一个执行资源密集型操作而不会冻结应用程序用户界面的有效典范。Qt的跨平台多线程功能简化了并行编程,另外它附加的同步功能可以更加轻松地利用多核架构。管理线程、数据和对象更加轻松,基于Qt的信号与槽,实现跨线程类

47、型安全的对象间通讯,高端API可以编译多线程程序而无须使用底端基元。4.嵌入式设备的紧凑视窗系统:Qt构建在标准的 API基础上,用于具有轻量级window系统的嵌入式 Linux 设备。基于 Qt的应用程序直接写入 Linux 帧缓冲,解除了您对 X11 视窗系统的需求。减少内存消耗,内存占用更小,可以编译移除不常使用的组件与功能,可以利用硬件加速图形,在桌面系统上的虚拟帧缓冲可用于嵌入式开发与调试。 5.对象间通讯:在开发用户图形界面中,一个常见的、重复发生系统崩溃与问题的症结根源是如何在不同组件之间进行通信。对于该问题,Qt 的解决方案是信号与槽机制,即执行Observer设计模式。我们

48、可以简单理解为当特殊事件发生的时候,信号就被发出了,一个插槽就是一个函数,被称作特定信号的响应。信号与槽机制是类型安全的(type safe),任意信号都可以连接任意或多个插槽,或跨多个线程,简化真正的组件编程。6.2D图形:Qt给您提供一个功能强大的2D图形画布,用以管理和集成大量的图形元素。高精度可视化大量元素,将窗体互动嵌入至图形场景中,支持缩放、旋转、动画与透视变换。7.多媒体框架:Qt使用 Phonon多媒体框架为众多的多媒体格式提供跨桌面与嵌入式操作系统的回放功能。Phonon可以轻松将音频与视频回放功能加入到Qt应用程序当中,并且在每个目标平台上提取多媒体格式与框架。以平台独立的

49、方式提供多媒体内容,从本地文件读取媒体或读取网络上的流媒体,提取Mac上Quick Time ,Windows 上的DirectShow 以及 Linux 上的Gstreamer。8.WebKit集成:Qt WebKit集成,即Qt集成了WebKit功能,WebKit是KDE项目下基于 KHTML的开放源web浏览器引擎。目前 Apple,Google 与Nokia等公司使用Qt WebKit集成。将web与本地内容和服务整合在单一的富应用程序当中,快速创建整合实时web内容与服务的应用程序,使用集成在本地代码中的 HTML 与Java Script,完全控制跨平台的浏览器环境。9.网络连接:

50、Qt 让您网络编程更简单,并支持跨平台网络编程。完整的客户/服务器插口提取,支持 ,FTP,DNS 与异步 1.1,无论HTML 和XML或图象与媒体文件,它都可以存取所有类型的数据。10.XML:Qt 为XML 文件以及SAX 和 DOM 协议的C+实现,提供了一个流媒体文件读写器。同时 Qt 还包含了 XQuery 一个简单的类似 SQL的查询语言,用于解析XML文件来选择和聚合所需要的XML元素,并且将它们转换成XML输出或其它格式的输出。仅需少数几行代码便可实现先进的 XML 查询,完全支持 XQuery 1.0 和 XPath 2.0,在您自己的应用程序中从XML查询、抽取和转换数据

51、。 11.脚本引擎:Qt 包含一个完全集成 ECMA 标准的脚本引擎。 QtScript 提供 QObject 集成,把 Qt的信号与槽机制整合成脚本,并且实现了C+ 与脚本的集成。 基于ECMA 标准的脚本语言 (ECMAScript 3是JavaScript 1.5的基础),为简化的对象间通讯使用Qt的信号与槽机制开创新的契机将脚本与您的Qt应用程序相集成。12.数据库:Qt 帮助您将数据库与您的Qt应用程序无缝集成。Qt支持所有主要的数据驱动,并可让您将SQL发送到数据库服务器,或者让 Qt SQL类自动生成 SQL 查询。支持所有主要的数据库驱动。以多种视图或数据识别表单方式显示数据。

52、 FTP通信协议FTP基本简介FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。FTP是TCP/IP的一种具体应用,它工作在OSI模型的第七层,TCP模型的第四层,即应用层,同时在传输层使用TCP,所以FTP客户在和服务器建立连接前就要经过一个被称作三次握手的过程。其连接是可靠的,传输是面向连接的,所以能为数据传输提供可靠的保证。FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,

53、并且不时的必需执行一些冗长的登录进程。FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。FTP工作原理TP协议中,控制连接均由客户端发起,而数据连接有两种工作方式:PORT方式和PASV方式。下面以PORT方式为例,如图1所示: 1.FTP服务器运行FTP守护进程,等待用户的F

54、TP请求。2.用户运行FTP命令,请求FTP服务器为其服务3.FTP守护进程收到用户的FTP请求后,派生出FTP子进程与用户进程 交互,建立文件传输控制连接,使用TCP端口21。 4.用户输入FTP子命令,服务器接收子命令,如命令正确,双方各派生一个数据传输进程FTP-DATA,建立数据连接,使用TCP端口20进行数据传输。 5.本次子命令请求的数据传输完毕,拆除数据连接,结束FTP-DATA进程。 6.用户继续输入FTP子命令,重复、的过程,直至用户输入quit命令, 双方拆除控制连接,结束文件传输,结束FTP子进程。 FTP客户端 FTP服务器 FTP守护进程 控制进程 fork 数据传输

55、进程 forkFTPd FTP请求FTP 控制连接(会话)FTP (端口21)FTP-DATA 数据连接(传输)FTP-DATA (端口20)图 2-2 FTP工作原理图FTP的作用FTP的在文件传输中起到很重要的作用,具体的作用有以下几点:1.可以促进文件的共享(计算机程序或数据)2.支持间接或者隐式的使用远程计算机3.向用户屏蔽不同主机中各种文件存储系统的细节4.可靠和高效的传输数据FTP的使用FTP有两种使用模式:主动和被动。主动模式要求客户端和服务端同时打开并且建统一个端口以创建连接。在这种情况下,客户端由于安装了防火墙会产生一些问题。所以,创立了被动模式。被动模式只要求服务器端产生一

56、个坚挺相应端口的进程,这样就可以绕开客户端安装了防火墙的问题。一个主动模式的FTP连接创建要遵循以下步骤:客户端打开一个随机的端口(端口号大于1024,在这里,我们称它为x),同时一个FTP进程连接至服务器的21号命令端口。此时,该TCP连接的来源地端口为客户端指定的随机端口x,目的地端口(远程端口)为服务器上的21号端口。客户端开始监听端口(x1),同时向服务器发送一个端口命令(通过服务器的 21号命令端口),此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接收数据。这个端口就是我们所知的数据端口。服务器打开 20 号源端口并且创建和客户端数据端口的连接。此时,来源地的端口为 20

57、,远程数据目的地端口为(x1)。客户端通过本地的数据端口创建一个和服务器 20 号端口的连接,然后向服务器发送一个应答,告诉服务器它已经创建好了一个连接。被动模式FTP: 为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,

58、客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:1. 从任何大于1024的端口到服务器的21端口 (客户端的初始化连接)2.服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)4.服务器的大于1024端口

59、到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口FTP的缺点密码和文件内容都使用明文传输,可能产生不希望发生的窃听事件,因为必须开放一个随机的端口以创建连接,当防火墙存在时,客户端很难过滤处于主动模式下的 FTP 流量,这个问题,通过使用被动模式的 FTP,得到了很大解决。服务器可能会被告知连接一个第三方计算机的保留端口,此方式在需要传输文件数量很多的小文件时,性能不好。 FTP 通信协议虽然可以被终端用户直接使用,但是它是设计成被 FTP 客户端程序所控制。运行 FTP 服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的

60、用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于 FTP 服务器的配置情况。FTP的效率较低:从FTP服务器上检索一个文件,包含繁复的交换握手步骤:客户端建立到FTP服务器端控制端口的TCP Socket链接,并等待TCP握手完成;客户端等待服务器端发送回执;客户端向服务器端发送用户名并等待响应;客户端向服务器端发送密码并等待响应; 客户端向服务器端发送SYST命令并等待响应;客户端向服务器端发送TYPE I命令并等待响应;如果用户需要在服务器端切换目录,客户端仍然发送命令并等待响应;主动模

温馨提示

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

评论

0/150

提交评论