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实现电脑和手机间数据传输的技术方案研究的更多相关文章

  1. 【转】 Android 基于google Zxing实现对手机中的二维码进行扫描--不错

    原文网址:http://blog.csdn.net/xiaanming/article/details/14450809 转载请注明出处:http://blog.csdn.net/xiaanming/ ...

  2. 使用adb在电脑和手机间传文件

    首先须要root手机. 然后,"Win + R",打开cmd窗体.以下以copy d:\1.txt到/system/文件夹为例说明. adb push source(localpa ...

  3. android 基于wifi模块通信开发

    这篇文章主要是我写完手机与wifi模块通信后所用来总结编写过程的文章,下面,我分几点来说一下编写的大概流程. 一.拉出按钮控件并设置它的点击事件 二.设置wifi权限 三.打开和关闭wifi 四.扫描 ...

  4. Android 基于google Zxing实现对手机中的二维码进行扫描

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/14450809 有时候我们有这样子的需求,需要扫描手机中有二维码的的图片,所以今天实现的 ...

  5. Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

      Android 高手进阶(21)  版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明出处:http://blog.csdn.net/xiaanming/article/detail ...

  6. 【转】Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果--不错

    原文网址:http://blog.csdn.net/xiaanming/article/details/10163203 转载请注明出处:http://blog.csdn.net/xiaanming/ ...

  7. 将win7电脑无线网变身WiFi热点,让手机、笔记本共享上网

    1.以管理员身份运行命令提示符:快捷键win+R→输入cmd→回车 2.启用并设定虚拟WiFi网卡:运行命令:netsh wlan set hostednetwork mode=allow ssid= ...

  8. WIN7使用技巧 让电脑变身WiFi热点,让手机、笔记本共享上网,如何开启无线网络,共享无线网络

    将win7电脑变身WIFI热点,让手机.笔记本共享上网 用win7建立无线局域网,可以共享上网可以局域网游戏. 开启windows 7的隐藏功能:虚拟WIFI和SoftAP(即虚拟无线AP),就可以让 ...

  9. Android手机间使用socket进行文件互传实例

    这是一个Android手机间文件传输的例子,两个手机同时装上此app,然后输入接收端的ip,选择文件,可以多选,点确定,就发送到另一个手机,一个简单快捷文件快传实例.可以直接运用到项目中. 下面是文件 ...

随机推荐

  1. linux 下文件的比较

    1.cmp命令,比较两个文件是否相同 比较文件test1和test2,如果这两个文件完全相同,则无任何输出,否则,输出第一处不同所在的字节以及行号,然后忽略后面的不同之处,退出命令的执行. [root ...

  2. openwrt interface

    orige : http://www.cnblogs.com/preorder69/p/3959187.html 这篇算是对openwrt网络接口的一个翻译吧,源地址:http://wiki.open ...

  3. 关于一个下载的源代码中的”*.vssscc“文件的问题

    今天下载了一份程序的源代码,老是提示我要连接源代码管理服务器,这个……你的账号密码我怎么知道,有木有.于是上网搜罗了一番找来了解决方案,在这里分享给可能出现同样问题的童鞋. 首先说明一下什么是vsss ...

  4. Android --------- 利用SharedPreferences存取数据

    //向SharedPreferences中存放数据 //1.定义SharedPreferences对象,通过getSharedPreferences方法得到 SharedPreferences sp ...

  5. 使用UISegementControl实现简易汤姆猫程序

    // // TomViewController.m #import "TomViewController.h" #import <AVFoundation/AVFoundat ...

  6. Win7下VS2010使用STLPort 和boost1.56.

    STLport的下载地址 http://sourceforge.net/projects/stlport/ 下载后,解压出文件.我的目录是 D:\STLport-5.2.1 . 右键计算机,属性,高级 ...

  7. 环形进度条带数字显示(canvas)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. UCOS 信号量

    uCOS-II信号量OSSemCreate(0)和OSSemCreate(1)详解 (2014-04-22 18:04:18) 转载▼ 标签: it 分类: 操作系统 在ucos-II中,为了实现任务 ...

  9. C语言写猜拳游戏中遇到的函数循环小问题

    各位可能在初学C语言的时候都有写过猜拳游戏.但在写猜拳的函数时,避免不了会使用循环. 当函数被套在一个循环中的时候,你的计分变量可能就会被重置为函数体里的初始值.那么怎么解决这个问题? 其实很简单,你 ...

  10. Java学习笔记--StringTokenizer的使用

    拓展:Pattern.split替代String.split http://www.cnblogs.com/gnivor/p/4386978.html StringTokenizer是一个用来分隔St ...