zoukankan      html  css  js  c++  java
  • 【转】Android Http Server

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://vaero.blog.51cto.com/4350852/939413

     Android Http Server

    1 引言
             Android如何构建Http服务器呢?本文的小例子,约莫着,还是能做个参考的^^。恩,例子实现的是PC浏览手机文件,支持了下载和删除。
     
    2 准备
             Http协议现今还是RFC2616吧,其基础的知识还是有必要了解的。弄份协议规范书参考,是个不错的选择。之后呢,就可以开始了^^。
     
             起初,想自己写个Http服务器学习来着,后来懒了==。有兴趣的,推荐NanoHTTPD,很小型的仅一个类的http服务器,不过,只部分支持Http/1.1。当然还有更简单的实现例子,不过,支持的就更少更单一了。
             继而,还是用了SDK内的HttpService实现的。该部分api源自apache httpcomponents项目中的http core。由于SDK的不同版本,在使用细节上与最新的http core还是有很多小差异的。至于本文例子,是api-8上的实现。
     
    3 创建Server
             创建WebServer,以HttpService实现服务器。其注册了3个请求处理,HttpFileHandler、HttpZipHandler、 HttpDelHandler。当WebServer每接收一个连接,派发至WorkerThread,新线程处理每个请求。
     
    WebServer部分代码:
     
    1. // 创建HTTP请求执行器注册表 
    2. HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry(); 
    3. // 增加HTTP请求执行器 
    4. reqistry.register("*" + SUFFIX_ZIP, new HttpZipHandler(webRoot)); 
    5. reqistry.register("*" + SUFFIX_DEL, new HttpDelHandler(webRoot)); 
    6. reqistry.register("*"new HttpFileHandler(webRoot)); 
    7. // 设置HTTP请求执行器 
    8. httpService.setHandlerResolver(reqistry); 
    9. /* 循环接收各客户端 */ 
    10. isLoop = true
    11. while (isLoop && !Thread.interrupted()) { 
    12.     // 接收客户端套接字 
    13.     Socket socket = serverSocket.accept(); 
    14.     // 绑定至服务器端HTTP连接 
    15.     DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); 
    16.     conn.bind(socket, params); 
    17.     // 派送至WorkerThread处理请求 
    18.     Thread t = new WorkerThread(httpService, conn); 
    19.     t.setDaemon(true); // 设为守护线程 
    20.     t.start(); 
     
    4 启动Server
             创建了个WebService,将WebServer套进去,实现Service方式。界面很简单,就一个按钮,启动如下:

    http server

     
    5 访问Server
             笔记本访问上述网址呗。
     

    http server

     

    http server

     
             当目录存在且可读时才有上述画面,不然会简单报个404、403什么的页面。当可写时,增加删除选项。返回响应页面,在HttpFileHandler内处理的。
             1)下载
             文件夹:会自动打包成zip下载。其在HttpZipHandler内处理的。
             文件:自动判断类型,或显示或下载。没多做处理,仍就是HttpFileHandler处理的。
             2)删除
             会提示是否删除。确定删除的话,会等处理结束提示完成,继而确认自动刷新。
     

             http server

     
             用的jquery impromptu插件,相关css、js在assets/wfs目录内。CopyUtil提供了复制assets目录至系统目录的方法。
     
    6 后记
             前段时间开始看其他‘乱糟糟’的东西了。Android的小例子可能不太会再写了==。
     
     
     

    本文出自 “-_--___---_-” 博客,请务必保留此出处http://vaero.blog.51cto.com/4350852/939413

    附件下载:Android HttpServer

  • 相关阅读:
    测试的基本方法
    一些基本常用的正则表达式
    MySQL和Oracle的区别与不同
    Ubuntu中使用python3中的venv创建虚拟环境
    在Ubuntu中搭建Python3的虚拟环境并开始django项目
    Django中的图片加载不出来解决方式记录
    在django中进行后台管理时插入外键数据时不显示值的问题
    Django2.2连接mysql数据库出现django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None问题
    在Ubuntu中安装了MongoDB后无法启动mongod的问题
    PostgreSQL练习3
  • 原文地址:https://www.cnblogs.com/hdjjun/p/3144561.html
Copyright © 2011-2022 走看看