Android Http Server

1引言

         安卓如何构建的Http服务器呢?本文的小例子,约莫着,还是能做个参考的^^恩,例子实现的是PC浏览手机文件,支持了下载和删除。
 
2准备
         HTTP协议现今还是RFC2616吧,其基础的知识还是有必要了解的。弄份协议规范书参考,是个不错的选择。之后呢,就可以开始了^^。
 
         起初,想自己写个的Http服务器学习来着,后来懒了==。有兴趣的,推荐NanoHTTPD,很小型的仅一个类的HTTP服务器,不过,只部分支持HTTP / 1.1。当然还有更简单的实现例子,不过,支持的就更少更单一了。
         继而,还是用了SDK内的HttpService实现的。该部分api源自apache httpcomponents项目中的http核心。由于SDK的不同版本,在使用细节上与最新的http核心还是有很多小差异的。至于本文例子,是API-8上的实现。
 
3创建服务器
         创建Web服务器,以HttpService的实现服务器。其注册了3个请求处理,HttpFileHandler,HttpZipHandler,HttpDelHandler。当Web服务器每接收一个连接,派发至的WorkerThread,新线程处理每个请求。
 
WebServer的部分代码:
复制代码
复制代码
//创建HTTP请求执行器注册表 
HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry(); 
//增加HTTP请求执行器 
reqistry.register(“*”+ SUFFIX_ZIP,新的HttpZipHandler(webRoot)); 
reqistry.register(“*”+ SUFFIX_DEL,新的HttpDelHandler(webRoot)); 
reqistry.register(“*”,new HttpFileHandler(webRoot)); 
//设置HTTP请求执行器 
httpService.setHandlerResolver(reqistry); 
/ *循环接收各客户端* / 
isLoop = true; 
while(isLoop &&!Thread.interrupted()){ 
    //接收客户端套接字 
    套接字socket = serverSocket.accept(); 
    //绑定至服务器端HTTP连接 
    DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); 
    conn.bind(socket,params); 
    //派送至WorkerThread处理请求 
    线程t =新的WorkerThread(httpService,conn); 
    t.setDaemon(真); //设为守护线程
    t.start(); 
} 
复制代码
复制代码
4启动服务器
         创建了个的WebService,将Web服务器套进去,实现服务方式界面很简单,就一个按钮,启动如下:
5访问服务器
         笔记本访问上述网址呗。
  当目录存在且可读时才有上述画面,不然会简单报个404403什么的页面。当可写时,增加删除选项。返回响应页面,在HttpFileHandler内处理的。
         1)下载
         文件夹:会自动打包成ZIP下载其在HttpZipHandler内处理的。
         文件:自动判断类型,或显示或下载没多做处理,仍就是HttpFileHandler处理的。
         2)删除
         会提示是否删除。确定删除的话,会等处理结束提示完成,继而确认自动刷新。
用的jquery impromptu插件,相关css,js在资产/ wfs目录内.CopyUtil提供了复制资产目录至系统目录的方法。
 
6后记
         前段时间开始看其他 '乱糟糟' 的东西了.Android的小例子可能不太会再写了==。
 
          超进化版传送门^^
 
 
本文源码:HTTP://pan.baidu.com/s/1rIYz6
 
 
 
来自:http://www.cnblogs.com/sishuiliuyun/p/3461084.html

猜你喜欢

转载自blog.csdn.net/oneasdf/article/details/80860538