zoukankan      html  css  js  c++  java
  • Android手机间无线互传功能探索及实现

      年前研究了一下Android如何实现无线互传的功能,写了个小demo,最近无事,遂整理一下,与各位共享。前期调研发现,Android想要实现无线互传有以下几种技术:1,Bluetooth通行已久,简单易用,无奈速度奇慢是硬伤;2,NFC,官方从API 9开始支持,但各厂商对此技术持观望态度,比如我的三星就没有相应NFC硬件,NFC适用近场少量数据传输,尚未测试数据量的表现,不过NFC所谓的近场对距离要求相当苛刻,基本是要贴着才能传;3,WIFI-P2P,传输速度快,且P2P使得两台设备互为C/S,传输可双向进行,官方从API 14开始支持,考虑到目前API 14以下的设备保养量巨大,只能暂时放弃此技术。

      权衡一下,参考目前各类无线快传软件,最终确定使用Wifi AP方式,自测兼容API 8设备,传输速度快,但只能单向传输。Client端通过Wifi连接到Server端开启的Wifi AP,连接成功后Client通过HttpEngine向Server发起Http请求,Server通过一个简易的HttpServer向Client提供响应服务,下面用一个非标准的流程图来大致示意一下方案流程:

       在上传工程之前,对源代码中几个重要的类简单解释一下:

      Client端

      WifiApClientManager:对WifiManager的接口进行了封装,以便于进行开启、连接等操作

      HttpEngineLite:发起Http请求的"引擎"类

      WifiApClientRequest:请求抽象类,子类WifiApClientGetRecvListRequest,WifiApClientGetFileRequest分别表示获取获取Server端待传文件列表请求及获取Server端指定文件请求,使用HttpEngineLite执行具体操作

      NanoHTTPClient:提供获取Server端待传文件列表,获取Server端指定文件等操作接口,使用线程池管理WifiApClientRequest

      Server端

      WifiApServerManager:对WifiManager的接口进行了封装,以便于进行开启AP,配置AP等操作

      WifiApServerUtil:定义了Android AP通用网关IP

      NanoHTTPD:此类为引用的开源代码(A simple, tiny, nicely embeddable HTTP server in Java)

      NanoHTTPServer:NanoHTTPD的子类,实现其接口,返回相应的HttpResponse

      下面就是源代码时间了,Read the fucking source code:

      http://files.cnblogs.com/zealotrouge/WifiAPDemo.7z

  • 相关阅读:
    Community Server 2.0 学习笔记:如何实现在线人数?
    CommunityServer2.0改造的一些心得[粗糙版]
    DotLucene源码浅读笔记(2) : Lucene.Net.Documents
    有意思.在线版的photoshop
    电子商务教程[资源]
    Lucene 1.9 多目录搜索的的一个bug
    小总结:DotLucene如何才能快速生成索引?
    DotLucene源码浅读笔记(1)补遗:编写简单中文分词器ChineseAnalyzer
    Windows下傻瓜式快速搭建Discuz论坛(也可以参考用于搭建其他php论坛)
    Lucene.net常见功能实现知识汇总
  • 原文地址:https://www.cnblogs.com/zealotrouge/p/3544146.html
Copyright © 2011-2022 走看看