Android的Ftp文件传输毕业设计论文.docx
- 文档编号:26962996
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:41
- 大小:270.55KB
Android的Ftp文件传输毕业设计论文.docx
《Android的Ftp文件传输毕业设计论文.docx》由会员分享,可在线阅读,更多相关《Android的Ftp文件传输毕业设计论文.docx(41页珍藏版)》请在冰豆网上搜索。
Android的Ftp文件传输毕业设计论文
基于Android的FTP文件传输
独创性声明
本人声明所呈交的毕业论文是我个人在导师指导下进行的研究工作及取得的成果。
尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
论文作者签名:
日期:
年月日
毕业论文版权使用授权书
本毕业论文作者完全了解学校有关保留、使用毕业论文的规定,即:
学校有权保留并向有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权学校要以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本论文。
保密□,在________年解密后适用本授权书.
本论文属于
不保密□。
(请在以上方框内打“√”)
毕业论文作者签名:
指导教师签名:
日期:
年月日日期:
年月日
【摘要】本课题先讨论了当前手机管理类应用程序的背景、现状和发展趋势,并分析了手机管理类应用程序现有的功能。
本课题根据用户的需求,基于Android技术,利用ftp远程共享原理来实现无线手机助手的设计。
本课题研究的无线手机助手采用的是基于C/S架构的MVC系统,基于ftp远程文件共享的Android技术,和Eclipse应用开发工具,利用网络代理作为中转服务器,利用Android2.2作为系统平台进行开发,对无线手机助手业务进行分析、设计,实现了登陆验证、浏览文件、文件上传、下载、删除等功能,以期达到快捷管理手机文件的目的。
【关键词】手机管理,手机助手,文件管理,Android,Ftp
WirelessMobileAssistantBasedOnAndroid
【Abstract】Thissubjectdiscussedthebackground,statusandtrendsofphonemanagementapplicationsonthefirst.Andanalyzestheexistingfunctionalityofthephonemanagementapplications.ThissubjectbasedontheneedsofusersandbasedonAndroidtechnologytousethetheftpremotesharedprincipletoachievethedesignofwirelesshandsetsassistant.WirelessmobileassistantfortheresearchisbasedonC/SstructureoftheMVCsystem,ftpremotefilesharing,basedonAndroidtechnologyandtheEclipseapplicationdevelopmenttools,usingthenetworkproxyasarelayserver,usingAndroid2.2asasystemplatformdeveloped.Throughanalysisinganddesigningthewirelessmobileassistant,thissubjectachievesloginauthentication,browsefiles,fileupload,download,deleteandotherfunctionsinordertoachievethepurposeofthecomfortablymanagephonefiles.
【KeyWords】MobileManagement,MobileAssistant,FileManagement,Android,Ftp
图目录
第1章绪论
1.1应用的开发背景
2007年11月由Google牵头有30多家移动技术和无线应用领域领先企业组成的开发手机联盟(OpenHandsetAlliance)发布了其智能手机平台Android。
Android是一个真正意义上的开放性移动设备综合平台,包括操作系统、用户界面、中间件和应用程序,拥有移动电话工作所需的全部软件,同时其开放性保证该平台不存在任何阻碍移动产业创新的专有权障碍[1]。
随着Android的迅猛发展,国内各种优秀应用也相继诞生,豌豆荚系列产品是国内最早的手机管理类应用。
豌豆荚是一款基于Android手机管理软件,具有备份恢复重要资料、通讯录资料管理、应用程序管理,音乐下载、视频下载与管理等功能。
在文件管理方面,最近上市的一款应用软件文件大师。
是一款功能强大的文件管理软件。
文件大师支持对文件的全部常用操作,如拷贝,删除,粘贴等。
采用了特别优化过的文件/目录复制算法,使得其在大量文件复制的时候比其他文件管理类工具速度更快。
1.2本课题研究内容
在本课题中,主要研究在手机上建设FTP服务器,实现任意客户端可以登录FTP服务器上传下载文件。
支持浏览器可视化浏览手机资源列表下载手机资源文件。
通过计算机资源管理器或我的电脑管理手机:
添加、删除、编辑等操作,全方位管理手机文件,实现无需数据线即可管理手机的功能。
第2章相关理论及关键技术
2.1Android特性简介
Dalvik虚拟机:
Android采用的Java虚拟机是自主开发的代号为Dalvik的虚拟机技术,在保证API方面兼容的同时Dalvik针对移动手机进行了大幅优化,占用资源更小,运行效率更高[2]。
内嵌浏览器:
基于开源的浏览器网页排版引擎WebKit。
优化的图形:
强大的自定义二维图形库。
基于OpenGLES1.0标准的3D图形功能,在移动3D开发中有着至关重要的地位。
SQLite数据库:
SQLitet提供结构化的数据存储。
它是一款轻型免费的且开源的数据库,它的设计目标是嵌入式的,它占用的资源非常低、需要的内存空间少、处理速度比较快和支持事务处理功能等。
多媒体支持:
支持各种通用的音视频和静态图像格式,如MP3、JPG、PNG等。
OpenCore是Android多媒体框架的核心,所有Android平台的音视频采集,播放的操作都是通过它来实现的。
通过OpenCore,程序员可以方便快速的开发出想要的多媒体应用程序。
GSM技术:
(依赖硬件)GlobalSystemforMobileCommunications,全球移动通讯系统,俗称“全球通”,是第二代移动通信技术,其开发El的是让伞球各地可以共同使用一个移动电话网络标准,让用户使_一部手机就能行遍全球。
蓝牙,EDGE,3G,andWiFi是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。
EDGE(EnhaIlcedDataRateforGSMEvolution),是增强型数据速率GSM演进技术[3]。
Camera,GPS,compass,andaccelerometer:
(依赖硬件)GPS(GlobalPositioningSystem)全球定位系统。
它是一个由覆盖全球的24颗1J星组成的卫星系统。
Compass是个开放源代码的JAVA搜索引擎框架[4]。
强大的开发环境:
包括一个设备模拟器,调试工具,内存和性能检测,以及EclipseIDE的开发插件。
Eclipse是个集成开发环境。
2.2Android系统架构
Android的架构是Linux内核、C/C++函数库、Dalvik虚拟机、应用框架以及关键应用程序构成的,通过编译基于框架的应用程序可以降低开发负荷。
应用软件原则上是在DalvikVM上运行的。
Android的架构图如下图2.2所示:
图2.2Android的架构图[5]
2.2.1关键应用程序
Android平台内包含一些关键应用程序,如邮件收发客户端程序、短信收发程序、日历和网页浏览器等,开发者可以在其平台上开发更多有特色的应用程序。
开发语言是Java。
2.2.2应用程序框架
Android应用程序的开发基于框架和组件。
Android本身已在其框架中提高了许多的组件供应用程序调用,当然开发者也开放新的组件,并将组件放入应用程序框架中,以供自己和其它应用程序调用。
2.2.3C/C++函数库
Android应用程序框架之下是一套C/C++函数库,它们服务于Android应用程序组件,其功能通过组件间接提供给开发者。
这些函数库包括:
标准C函数库、媒体功能库、浏览器引擎、2D和3D图形库、基于WEB应用的的安全协议SSL、用于点阵和矢量字体渲染的FreeType以及SQLite引擎等[6]。
2.2.4Java程序运行环境
Android的Java程序运行环境包含一组Java核心函数库及Dalvik虚拟机,它们有效地优化了Java程序的运行过程。
所有的Android应用都运行在它自己的进程里,该进程是一个Dalvik虚拟机的实例,Dalvik被设计成能在一台设备上高效的运行多个虚拟机实例。
Dalvik虚拟机的可执行文件被封装成Dalvik可执行格式(.dex)。
这是被优化过的最小内存依赖的格式[7]。
Java编译器(dx工具)将注册了的和运行时用到的类编译成.dex格式。
Dalvik虚拟机依赖于底层Linux内核提供的功能,如线程机制,和内存管理机制等。
2.2.5Linux内核
Android系统平台是基于优化了的Linux内核,是其系统平台的核心[8]。
它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层,提供了一个屏蔽层用于屏蔽硬件和上层软件。
2.3Android应用程序框架
对于一个Android应用程序来说,是由Activity、IntentReceiver、Service、ContentProvider四部分组成,但并不是每一个Android应用程序都必须由这四部分组成[9]。
在应用程序中使用时,需要在配置文件AndroidMainfest.xml中进行配置。
这个配置文件是每个Android应用程序所必需的,用于定义应用程序的组件、组件的功能以及必要条件等[10]。
2.3.1Activity
Activity是构成应用程序中最重要的构造块,在Android应用程序中,几乎都是通过Activity来与用户进行交互[11],所以Activity主要负责的就是创建与用户进行交互的显示窗口,你可以在这些窗口里通过调用setContentView(View)方法来显示你自己的用户界面。
2.3.2IntentReceiver
IntentReceivert是用于对外部事件的响应,当外部事件发生时,会使用NotificationManager通知用户[12]。
当一个IntentReceiver被触发时,系统会在需要的时候启动对应的应用程序。
如在本系统中,当用户正在其它界面进行操作时,有好友发送消息过来,就会以通知的形式发送到当前界面的正上方来通知用户。
各种应用还可以通过使用Context.broadcastIntent()将它们的IntentReceiver广播给其它的应用程序,实现应用之间的通讯[13]。
2.3.3Service
Service是提供连续信息的应用程序。
它是运行于应用程序后台的服务,在用户进行其它活动的时候,这个服务将一直运行在基于Android平台的即时通讯系统的研究与实现后台直到用户停止该服务或服务运行结束。
本系统客户端扩展功能的阅读器就是采用Service来进行设计和开发的,使用户可以边聊天边看书。
2.3.4ContentProvider
ContentProvider应用程序能够将它们的数据保存到文件、SQL数据库和其它的存储设备中。
当应用程序需要使用存储设备中的数据时,可以使用ContentProvider来完成。
使用ContentProvider能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据[14]。
第3章需求分析
3.1概述
随着手机功能不断增强,手机管理类工具软件已成为智能手机重要软件之一,开发一款符合广大用户需求的手机文件管理类应用有很好的市场前景和意义。
本课题的目标是开发一款基于Android平台符合用户使用需求的手机文件管理助手。
实现任意客户端可以登录手机FTP服务器上传下载文件。
支持浏览器可视化浏览手机资源列表下载手机资源文件。
通过计算机资源管理器或我的电脑管理手机:
添加、删除、编辑等操作,全方位管理手机文件,实现无需数据线即可管理手机的功能。
3.2功能需求
作为Android平台上开发的应用软件,它具有与用户交互的界面,界面简洁美观易于操作。
因此,对手机阅读器的功能规定可以从手机阅读器的界面来划分。
手机助手的用户操作界面分为一下三部分:
设置界面,控制界面,说明界面。
3.2.1设置界面
用户设置ftp服务器的账号和密码,端口号默认为2121,手机文件路径默认为/sdcard。
设置界面用例图如下图3.2所示:
图3.2设置界面用例图
3.2.2控制界面
用户触摸开关按钮控制服务器的开启与关闭,只有当手机连接到wifi网络时才能开启该共享服务功能。
当服务开启时,状态栏显示“无线手机助手接受ftp连接”。
程序自动获取手机ip地址,控制界面提示“在‘我的电脑’里输入ftp:
//xxx”用户输入ftp地址即可远程操作手机中的文件。
3.2.3说明界面
为用户提供本应用的使用说明以及注意事项。
3.3性能需求
3.3.1手机系统要求
Android系统2.2版本以上,对以后继续进行升级开发有可延续性。
3.3.2灵活性
软件基于Android操作系统,是基于组件的开发方式。
3.3.3时间特性的要求
软件的速度要在用户可接受的范围能扩展需求。
3.3.4软件特性要求
软件运行速度要在用户可接受的范围之内,对电量等消耗要在用户可接受范围之内。
保证在有wifi热点的区域使用,手机具备sd卡。
第4章总体设计
4.1系统总体结构
系统的总体设计思路是在Android手机上部署一个ftp服务器,负责提供服务并与pc客户端通信。
pc作为管理手机资源的客户端,通过“我的电脑”或“资源管理器”进行文件操作。
这实际上是一个C/S结构的系统,Android手机作为服务器,pc作为客户端。
系统总体结构图如下图4.1所示:
图4.1系统总体结构图
在该系统中,网关连接了内部网络和智能外部网络,所有内部的设备与该网关相连。
用户携带Android智能手机进入空间后,手机端连入网络,动态获取一个IP地址,运行ftp服务。
PC访问ftp地址与服务器进行交互。
Android手机与PC之间通过Socket进行通信[15]。
4.2服务器系统解决方案
由于Android设备不能够接受入站连接,但它可以自由创建出站连接。
因此Android设备上建立永久保持一个TCP连接到代理服务器。
我们称之为“命令连接”。
在本课题中,利用代理服务系统作为Pc和Android手机的中介信使,解决了Android手机的入站连接限制。
当FTP客户端希望通过代理连接,它启动一个正常的FTP连接到代理服务器。
代理通知本应用程序有一个即将到来的FTP会话等待被建立。
本应用程序建立另一个TCP连接到代理(除了现有的控制连接),这个连接将被用于专门从FTP客户端发送和接收数据。
服务器系统原理图如下图4.2所示:
图4.2服务器系统原理图
第5章详细设计
5.1代理协议拟定
这整个代理系统的存在是为了解决入站连接限制。
移动电话服务供应商阻止入站TCP连接,解决方法是在互联网上创建一个代理服务。
Android设备是不能够接受入站连接,但它可以自由创建出站连接。
因此Android设备上建立永久保持一个TCP连接到代理服务器。
我们称之为“命令连接。
”只要本应用程序运行着这个连接就存在,除非用户明确禁用它。
当FTP客户端希望通过代理连接,它启动一个正常的FTP连接到代理服务器。
代理通知本应用程序有一个即将到来的FTP会话等待被建立。
本应用程序建立另一个TCP连接到代理(除了现有的控制连接),这个连接将被用于专门从FTP客户端发送和接收数据。
重要的一点词汇:
“命令”连接,是本应用程序和代理服务器之间的TCP连接。
此连接使用新的协议,如下所示。
“控制”连接,是FTP客户端和本应用程序之间的普通的FTP连接。
使用普通的FTP协议,其中客户端发送的东西像USER,LIST,RETR,服务器响应“200OK”,“503Forbidden”等。
5.1.1DATASOCKETS
FTP协议的设计决定了新的TCP连接,独立于控制连接,它在每次有一个目录列表或文件传输时被创建。
当它要执行动作时,需要跟客户端有一个新的datasocket(新的TCP连接)本应用程序创建另一个TCP连接到代理。
5.1.2DISAMBIGUATINGDEVICESANDSESSIONS
由于代理服务器上运行在一个单一的IP和端口,提供多个设备和用户使用,因此它需要一些匹配传入连接的方式。
例如,在PASV模式文件传输,本应用程序和客户端都要创建入站连接到代理服务器。
在有许多客户端在同一时间被创建连接的情况下,代理使用的某种被称为“前缀”匹配这两个连接。
前缀是6个字符的字母数字代码,唯一标识一个设备上运行本应用程序。
它由代理服务器创建一个控制连接时分配,然后给本应用程序。
5.1.3AUTHENTICATION
设备的安全识别是通过分配一个唯一的“secret”到每个设备运行本应用程序。
此secret被分配的第一次设备连接到代理服务器,并在设备上保持不变。
这并不是很安全,但很合适。
这个系统不能很好的对抗ANDROID_ID欺骗。
这是不幸的,但足够好。
5.1.4API
请求和响应都是JSON的数据形式。
所有的请求都有一个顶层的字符串为“action”的请求类型。
例如,请求创建一个帐户为如下形式:
{
"action":
"create_account"
"android_id:
"1234567890"
}
响应是一个JSON对象做为请求的响应。
作为一个惯例,如果在处理请求时发生错误,响应对象将包含顶级的字符串名为“errorCode”和“errorString”来识别错误。
该errorCode是一个唯一的数字来表示错误,Errorstring是可读的错误描述。
例如,如果不能创建帐户,下面的语句可以作为一个响应返回给上面的创建账户请求:
{
"errorCode":
10
"errorString":
"AnaccountalreadyexistsforthatANDROID_ID"
}
如果操作成功
{
"secret":
"abcdefghijklmnopqrstuvwxyz0123456789"
}
成功的请求可能会导致一个响应是空的对象,如果没有错误报告和请求不要求返回任何值。
这将是空的JSON对象,“{}”。
例如,要求与行动“NOOP”会提示一个空的响应。
在本应用程序已经建立TCP连接到代理以后本应用程序必须发送一下信息:
-create_account
-authenticate
本应用程序到代理服务器的请求列表:
Action:
create_account
Purpose:
本应用程序第一次运行时只调用一次。
导致一个帐户被创建并创建一个秘密。
应该返回的秘密存储在持久性存储器中。
如果一个设备发送请求和接收响应表示成功,那么该会话被验证,那么设备可以发送其他请求。
Params:
"android_id":
AndroidAPI提供的唯一设备标识符
"swiftp_version":
安装的FTP服务器版本
Returns:
"secret":
此设备将用来认证密码的“秘密”
Errors:
12:
ANDROID_ID的完整性检查失败
Action:
authenticate
Purpose:
验证设备。
在调用任何其他命令之前调用(除create_account)。
Params:
"android_id":
AndroidAPI提供的唯一设备标识符
"secret":
这个设备的秘密
"swiftp_version":
安装的FTP服务器版本
Returns:
Emptyobjectonsuccess
Errors:
11:
ANDROID_ID不在数据库中,或秘密是错误的
Action:
start_command_session
Purpose:
验证设备,并开始命令会话
Params:
None
Returns:
"prefix":
前缀字符串用来识别这个会话和设备
Action:
data_pasv_listen
Purpose:
使代理开始在新的端口监听从FTP客户端来的TCP连接请求。
在代理已经收到了从FTP客户端的PASV命令以后,这个action将会被本应用程序调用,之后代理可以开始监听来自ftp客户端的入站数据连接请求。
Params:
None
Returns:
"address":
一个字符串,给出FTP客户端应该连接的地址
"port":
一个数字,给出服务器正在侦听的端口。
Errors:
Nonespecifictothisrequest
Action:
data_pasv_accept
Purpose:
一个pasv_listenaction后,代理将监听从FTP客户端来的入站连接。
此请求将使得代理为FTP客户端传入的连接执行一个accept()方法。
pasv_accept必须通过相同的连接发送相关的pasv_listen请求。
成功后,则返回空的JSON对象,socket将会进入代理模式,它会简单地在FTP客户端和本应用程序之间来回传递数据(它将不再接受请求)。
Params:
None
Returns:
Emptyobjectonsuccess
Errors:
13:
代理等得太久没有收到一个连接请求
Action:
data_port_connect
Purpose:
打开一个给定的地址和端口的出站连接,并开始数据转移。
如果这个动作是成功的,则TCP连接将不再接受JSON请求,将成为一个简单的双向代理之间FTP客户端和SwiFTPAndroid应用程序。
Params:
"address":
代理应该打开的一个连接地址
"port":
代理应该打开的一个连接端口
Returns:
Emptyobjectonsuccess
Errors:
14:
代理无法打开连接到给定的地址和端口。
Action:
accept_control_connection
Purpose:
当有一个控制连接从FTP客户端发出,Android设备将被通知,在这个端口上它会连接一个新的socket,进行身份验证,并发送此请求。
如果申请成功,则套接字将停止接受请求,并成为一个纯粹的在FTP客户端与之间本应用程序的代理。
Returns:
Emptyobjectonsuccess
Errors:
11:
验证失败代理服务器向本应用发送的请求:
Action:
con
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android Ftp 文件传输 毕业设计 论文