惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
SecWiki News
SecWiki News
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
小众软件
小众软件
C
CERT Recently Published Vulnerability Notes
Jina AI
Jina AI
N
Netflix TechBlog - Medium
GbyAI
GbyAI
IT之家
IT之家
Apple Machine Learning Research
Apple Machine Learning Research
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
T
Tor Project blog
P
Palo Alto Networks Blog
P
Privacy & Cybersecurity Law Blog
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
T
Tailwind CSS Blog
C
Check Point Blog
Cloudbric
Cloudbric
Y
Y Combinator Blog
The Last Watchdog
The Last Watchdog
Forbes - Security
Forbes - Security
Last Week in AI
Last Week in AI
S
Security Affairs
博客园 - Franky
F
Fortinet All Blogs
量子位
M
MIT News - Artificial intelligence
C
Cisco Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
S
Secure Thoughts
V
Visual Studio Blog
AI
AI
美团技术团队
B
Blog RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - 三生石上(FineUI控件)
阮一峰的网络日志
阮一峰的网络日志
Engineering at Meta
Engineering at Meta
人人都是产品经理
人人都是产品经理
Microsoft Security Blog
Microsoft Security Blog
T
Threatpost
Cyberwarzone
Cyberwarzone

博客园 - my favorite

【转】QT样式表 (QStyleSheet) 【转】Qt事件循环与线程 二 [转]Qt 智能指针学习 【转】Android Web Server Java Annotation 注释语法 android中json的序列化与反序列化 JavaScript定义类的几种方式 js获取浏览器高度和宽度值(多浏览器) Setting up SSL made easy… Better, Faster, Easier SSL testing for ASP.NET MVC & WebForms ASP.NET MVC 3 Internationalization Windows 8 学习笔记(十四)--.map文件与.kml文件的解析 Windows 8学习笔记(十二)--集合控件 Windows 8 学习笔记(十三)--生命周期 Windows 8学习笔记(十一)---图片的显示与保存 Windows 8 Metro App学习笔记(九)—磁砖 Windows 8学习笔记(十)----Notification Windows 8 学习笔记(八)--各种流之间的转换 Windows 8学习笔记(七)--Input输入设备
【转】Android Http Server
my favorite · 2013-06-19 · via 博客园 - my favorite

 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.  
  2. HttpRequestHandlerRegistry reqistry = new HttpRequestHandlerRegistry(); 
  3.  
  4. reqistry.register("*" + SUFFIX_ZIP, new HttpZipHandler(webRoot)); 
  5. reqistry.register("*" + SUFFIX_DEL, new HttpDelHandler(webRoot)); 
  6. reqistry.register("*"new HttpFileHandler(webRoot)); 
  7.  
  8. httpService.setHandlerResolver(reqistry); 
  9.  
  10. isLoop = true
  11. while (isLoop && !Thread.interrupted()) { 
  12.      
  13.     Socket socket = serverSocket.accept(); 
  14.      
  15.     DefaultHttpServerConnection conn = new DefaultHttpServerConnection(); 
  16.     conn.bind(socket, params); 
  17.      
  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