Android基于WIFI实现电脑和手机间数据传输的技术方案研究
Android手机和电脑间基于wifi进行数据传输,从技术上讲,主要有两种方案:
一种是通过ftp协议实现,Android手机作为数据传输过程中的ftp服务器;
一种是通过http协议实现。Android手机作为数据传输过程中的http服务器。
所以,技术实现的难点在于我们的app怎么实现ftp或者http服务器的功能,当然可以自己先阅读ftp协议或者http协议,根据规范自己实现一个,如果你时间充裕、技术过关的话;另一种方法是寻求开源社区的帮助,本文重点通过分析市场上已有的几款实现wifi数据传输的apps,来说明开源ftp或者http服务器的选型。
【百度文库】
新版的百度文库实现了wifi无线传输功能,界面如左下图所示,可以看到它是通过ftp协议实现的。在PC端“我的电脑”地址栏输入ftp地址,就可以访问手机上的文件了,界面如右下图所示,可以看到这是一个ftp虚拟目录,结构组织良好。同时,由于文库的ftp传输功能是在一个Service中启动的,因此,在进行文件传书时,不需要停留在这个界面,可以在文件传书的同时使用这个app的其他功能。

通过分析可知,百度文库是基于开源ftp服务器Colorado FTP来实现wifi无线数据传输的。
Colorado FTP是一个Java实现的FTP服务器,具有快速、可靠和可扩展等优点,完全兼容RFC 959和RFC3659,但是由于Colorado FTP不是专门为Android设备定制的,所以如果在Android设备上使用的话,需要花费一定的工作量进行技术改造。项目地址是:http://cftp.coldcore.com/index.html,遵循LGPL协议,所以商用软件可以放心使用;
【Anyview】/ 【多看阅读】
这两款apps同样是基于ftp实现的无线传书,之所以将它们放在一块,是因为它们都采用了相同的技术方案,界面如下图所示。这两款apps在进行文件传书时,只能停留在文件传输界面,只要退出这个界面,ftp连接就中断了,比较不友好,同时,在“我的电脑”地址栏输入ftp地址连接成功后,默认进入的是手机sdcard的根目录,没有自定义ftp虚拟目录。


通过分析可知,这两款apps都使用了swiftp来实现ftp服务器的功能。
swiftp是专门为Android设备定制的开源FTP服务器,集成到自己的app中很容易。项目地址是:
https://github.com/ppareit/swiftp,遵循GPL协议,该协议被普遍认为是“有传染性”的“病毒”,因为如果你的app中使用了遵循该协议的开源代码,那么你的整个app的代码也必须开源出来。可见,anyview和多看阅读这两款apps的开发者们,没怎么弄明白就使用了swiftp,好在中国目前在开源这块不怎么与世界接轨,小公司直接使用遵循GPL协议的开源代码还是可以无所顾虑的。
【ftp数据传输总结】
基于ftp协议实现无线传输功能,基本原理就是移植一个开源的ftp服务器到Android设备上,再集成到自己的app中。所以关键在于开源ftp服务器的选取,还见过有点app使用Apache FtpServer,Apache FtpServer是纯Java实现ftp服务,是一个完整和可移植的FTP服务器引擎解决方案,它基于著名的mina框架实现底层的网络操作。项目地址:http://mina.apache.org/ftpserver-project/index.html,但貌似这个项目需要集成较多的第三方jar包,会使得最终apk的大小更大,所以不建议使用。
综合考虑:1)遵循的开源协议;2)集成的难度;3)集成后带来的apk体积的膨胀;建议使用Colorado FTP。
【金山共享精灵】
貌似这个app很久没更新了,估计是项目被停掉了,但它的实现方案还是可以参考下,基于http协议实现的无线传输,在PC端浏览器中输入http地址后,界面如下图所示。这个web界面应该是有专门的FE工程师来实现的,在这里可以很方便的对手机的SD卡进行操作,UI方面做得还是很不错的。

通过分析可知,金山共享精灵使用Jetty作为http服务器和Servlet容器,不过使用的是Jetty的codehaus分支。Codehaus分支的Jetty可从下面的地址找到:http://docs.codehaus.org/display/JETTY/Downloading+Jetty 。
Jetty遵循两个开源协议: Apache Licence 2.0和 Eclipse Public License 1.0。商用软件可以随意的使用。
【虚拟数据线】
这个app同时实现了ftp和http两种方式的无线数据传输,它的ftp方式基于swiftp实现,这里只介绍下http方式的实现。在PC端浏览器输入http地址后,界面如下所示:

虚拟数据线同样使用Jetty作为http服务器,不过使用的是Jetty的eclipse分支,项目地址是:
http://www.eclipse.org/jetty/。
【http数据传输总结】
基于http协议实现的无线数据传输,基本原理是在移植一个开源的http服务器到Android设备上,在进行数据传输前,启动该http服务器,并根据需要实现自己的web界面及相应的功能,这方面可能需要FE工程师的介入。如果确实需要使用http方式的话,可以考虑使用jetty。
Android基于WIFI实现电脑和手机间数据传输的技术方案研究的更多相关文章
- 【转】 Android 基于google Zxing实现对手机中的二维码进行扫描--不错
原文网址:http://blog.csdn.net/xiaanming/article/details/14450809 转载请注明出处:http://blog.csdn.net/xiaanming/ ...
- 使用adb在电脑和手机间传文件
首先须要root手机. 然后,"Win + R",打开cmd窗体.以下以copy d:\1.txt到/system/文件夹为例说明. adb push source(localpa ...
- android 基于wifi模块通信开发
这篇文章主要是我写完手机与wifi模块通信后所用来总结编写过程的文章,下面,我分几点来说一下编写的大概流程. 一.拉出按钮控件并设置它的点击事件 二.设置wifi权限 三.打开和关闭wifi 四.扫描 ...
- Android 基于google Zxing实现对手机中的二维码进行扫描
转载请注明出处:http://blog.csdn.net/xiaanming/article/details/14450809 有时候我们有这样子的需求,需要扫描手机中有二维码的的图片,所以今天实现的 ...
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果
Android 高手进阶(21) 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.net/xiaanming/article/detail ...
- 【转】Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果--不错
原文网址:http://blog.csdn.net/xiaanming/article/details/10163203 转载请注明出处:http://blog.csdn.net/xiaanming/ ...
- 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网
1.以管理员身份运行命令提示符:快捷键win+R→输入cmd→回车 2.启用并设定虚拟WiFi网卡:运行命令:netsh wlan set hostednetwork mode=allow ssid= ...
- WIN7使用技巧 让电脑变身WiFi热点,让手机、笔记本共享上网,如何开启无线网络,共享无线网络
将win7电脑变身WIFI热点,让手机.笔记本共享上网 用win7建立无线局域网,可以共享上网可以局域网游戏. 开启windows 7的隐藏功能:虚拟WIFI和SoftAP(即虚拟无线AP),就可以让 ...
- Android手机间使用socket进行文件互传实例
这是一个Android手机间文件传输的例子,两个手机同时装上此app,然后输入接收端的ip,选择文件,可以多选,点确定,就发送到另一个手机,一个简单快捷文件快传实例.可以直接运用到项目中. 下面是文件 ...
随机推荐
- http发送post请求
package com.j1.soa.resource.member.oracle.service; import java.io.BufferedReader; import java.io.IOE ...
- C# winCE5.0开发右键效果解决方案
用VS2008开发C#语言wince程序,发现程序里右键捕获不到,采集器上点也没反应,上网查好像有个c++版本的,看不懂啊,下面我给出C#实现右键效果的解决方案,请各位多多优化. 首先控件Contex ...
- 《第一行代码》学习笔记39-服务Service(6)
1.Android中定时任务一般有两种实现方式:(1)使用Java API里提供的Timer类:(2)使用Android的Alarm机制. 但是,Timer类有个明显的短板,不太适用于那些需要长期在后 ...
- iOS_SN_CocoaPods使用详细说明( 转)
一.概要 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库. 二.安装 由于 ...
- 武汉科技大学ACM :1004: C语言程序设计教程(第三版)课后习题6.3
Problem Description 求Sn=2+22+222+…+22…222(有n个2)的值. 例如:2+22+222+2222+22222(n=5),n由键盘输入. Input n Outpu ...
- MySQL学习笔记(5) - 修改和删除数据库
1.完整语句 ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACHER SET [=] charset_name; 2.修改数据库的编码方式 al ...
- centos 服务器装与python34源码安装
http://www.111cn.net/sys/CentOS/63645.htm 1.CentOS安装Python的依赖包(不安装依赖包,会导致python安装不完整) yum groupinsta ...
- Flask学习记录之Flask-Mail
Flask-Mail可以连接到配置中的SMTP服务器,进行邮件发送,如果没有进行SMTP服务器的配置,将会默认连接到localhost上的 一.配置及初始化 (1)flask应用配置 #配置选项 MA ...
- (转载)Python装饰器学习
转载出处:http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方 ...
- C语言基础学习基本数据类型-其他整数类型
其他整数类型 初学C语言时,int类型会满足你对整数的大多数需求. C语言还提供了三个关键字用以修饰基本的整数类型:short.long和unsigned.有以下几个注意点: (1)C语言没有具体规定 ...