当前位置: 首页 > article >正文

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。


http://www.lryc.cn/news/2412802.html

相关文章:

  • windowsthinpc虚拟内存_瘦身版Win7:WinTPC深入体验
  • 20210726:FLAC刻录音乐CD教程05-总结
  • javascript编码转换,javascript跳转代码
  • 在台式电脑上完美安装Mac OS X操作系统的解决方案
  • 基于nodejs的二手物物交换平台【毕业设计源码】
  • Windows及Linux下的虚拟主机Web管理软件
  • oracle minus用法(求并集和交集)
  • BT4(BackTrack) 发布
  • 人体姿态识别~Alphapose论文笔记~《RMPE: Regional Multi-Person Pose Estimation》
  • php在线文件编辑管理器 在线文本查看PHP插件
  • 第一篇 windows驱动之WinRing0.sys的开发及使用(电脑温度监控软件开发)
  • 全新酷盒9.0多功能工具箱软件的最新iapp源码
  • Windows桌面软件美化界面:分享著名的VC++ DirectUI/duilib/SOUI/REDM,IMGUI和C#开源界面库
  • ROS常用命令及脚本
  • 新浪微博模拟登录
  • 十大局域网监控软件优选(2024最新排行榜)
  • 工作以来接触到的技术流
  • easeljs中的movieClip控件示例
  • Win11没有TPM2.0解决方法
  • jeesite配置指南(官方文档有坑,我把坑填了!)
  • 如何配置强缓存和协商缓存
  • shader理解
  • 全网最全的权限系统设计方案(图解)
  • 什么是API?(看完你就理解了)
  • stpcpy和stpncpy用法 strcpy和strncpy用法
  • strcat,strncat函数详解
  • Tomcat之点击startup.bat出现闪退的解决办法
  • opencv Scalar()的使用 心得
  • 【目标检测】39、一文看懂计算机视觉中的数据增强
  • NoSQL数据库Redis使用命令简介