Android Http Server

转载 2015年07月06日 17:20:52
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部分代码:

    // 创建HTTP请求执行器注册表
    HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry();
    // 增加HTTP请求执行器
    reqistry.register("*" + SUFFIX_ZIP, new HttpZipHandler(webRoot));
    reqistry.register("*" + SUFFIX_DEL, new HttpDelHandler(webRoot));
    reqistry.register("*", new HttpFileHandler(webRoot));
    // 设置HTTP请求执行器
    httpService.setHandlerResolver(reqistry);
    /* 循环接收各客户端 */
    isLoop = true;
    while (isLoop && !Thread.interrupted()) {
        // 接收客户端套接字
        Socket socket = serverSocket.accept();
        // 绑定至服务器端HTTP连接
        DefaultHttpServerConnection conn = new DefaultHttpServerConnection();
        conn.bind(socket, params);
        // 派送至WorkerThread处理请求
        Thread t = new WorkerThread(httpService, conn);
        t.setDaemon(true); // 设为守护线程
        t.start();
    }
4 启动Server
         创建了个WebService,将WebServer套进去,实现Service方式。界面很简单,就一个按钮,启动如下:

http server

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

当目录存在且可读时才有上述画面,不然会简单报个404、403什么的页面。当可写时,增加删除选项。返回响应页面,在HttpFileHandler内处理的。  

      1)下载
         文件夹:会自动打包成zip下载。其在HttpZipHandler内处理的。
         文件:自动判断类型,或显示或下载。没多做处理,仍就是HttpFileHandler处理的。
         2)删除
         会提示是否删除。确定删除的话,会等处理结束提示完成,继而确认自动刷新。

用的jquery impromptu插件,相关css、js在assets/wfs目录内。CopyUtil提供了复制assets目录至系统目录的方法。

6 后记
         前段时间开始看其他‘乱糟糟’的东西了。Android的小例子可能不太会再写了==。

7 提示
手机使用的wifi网应该和PC浏览器的网络处于同一网段内,否则是没法访问的。要解决不同网段的访问,需要进行NAT打洞,或者使用另外的服务器进行数据中转。这个不属于本文的讨论范围了,有需求可以参考其他资料。附近有相关代码。只是源代码中关闭service之后服务不会立即停止,修改WebServer的相关代码即可。

http://download.csdn.net/detail/jiangbing0125/8873905

用libevent实现一个小小的HTTP SERVER

如题,先上代码://http_server.c #include #include #include #include #include #define PORT 8080 #defi...
  • AAA20090987
  • AAA20090987
  • 2013年12月27日 11:34
  • 1949

如何开发自己的HttpServer-NanoHttpd源码解读

现在作为一个开发人员,http server相关的内容已经是无论如何都要了解的知识了。用curl发一个请求,配置一下apache,部署一个web server对我们来说都不是很难,但要想搞清楚这些背后...
  • MrTitan
  • MrTitan
  • 2014年07月20日 23:04
  • 17458

快速搭建HTTP服务器 go http server

go http server 例子,自定义路由。 package main import ( "fmt" "net/http" "reflect" "strings"...
  • chenxun2009
  • chenxun2009
  • 2017年06月28日 18:34
  • 780

go语言学习之-------go httpserver进阶之路(1)

package main import ( "io" "net/http" //"strings" "time" ) var ( server = &htt...
  • chenxun2009
  • chenxun2009
  • 2017年07月04日 19:35
  • 1879

Windows 下 Apache HTTP Server 安装、配置以及与 Tomcat 的整合(附图)

注:本文欢迎转载,以下为本人亲测,如有疑问请留言,转载请注明:http://blog.csdn.net/wqmain/article/details/8941759 如果您能点开这篇文章,说...
  • wqmain
  • wqmain
  • 2013年05月18日 00:01
  • 33222

移动端搭建Http Server(七)—— 实现wifi传图

上篇中实现了访问APP中内置的静态网页 移动端搭建Http Server(六)—— 实现APP中内置静态网页,本篇会继续实现另一个功能——wifi传图1.实现思路 ImageUploadHandler...
  • jianiuqi
  • jianiuqi
  • 2016年11月27日 22:00
  • 507

pache HTTP Server停止工作 原因分析(一)

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes) in.....
  • Hayley_Liu
  • Hayley_Liu
  • 2016年08月04日 10:31
  • 5392

实现Http Server的三种方法

一、使用SUN公司在JDK6中提供的新包com.sun.net.httpserver    JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Se...
  • qq_405930170
  • qq_405930170
  • 2017年04月26日 08:39
  • 699

Go语言 简单的http服务器示例

一个简单的http服务器代码 package main import ( "io" "net/http" "log" ) func HelloServe...
  • abv123456789
  • abv123456789
  • 2014年04月20日 16:06
  • 7883

实现自己的http server

实现自己的http server Write your own http server author : Kevin Lynx Why write your own?     看这...
  • dai_jing
  • dai_jing
  • 2014年07月22日 17:33
  • 565
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android Http Server
举报原因:
原因补充:

(最多只允许输入30个字)