您的位置:首页 > 移动开发 > Android开发

A bare minimum web server for android platform

2011-08-31 15:23 363 查看
随着现在的移动电话有了更强的计算能力,运行在移动电话上的web服务器也有了更强的功能。虽然已经有了很多Android Web服务器的应用,但是我还是决定要写一个自己的。我们能够使用org.apache.http包来创建HTTP服务器,唯一要注意的是,我们不能用一些默认的端口,例如80端口。我想这应该是Linux的限制,与Android 平台无关。

为了建立一个典型的Web服务器,你首先要做的是创建一个server socket用来监听端口以及接受连接,最后还要处理HTTP请求并向客户端发送响应。

我们使用 java.net.ServerSocket这个类来创建Server Socket。这个类的构造函数接受一个用来监听外来连接的端口号。一旦ServerSocket对像建立起来了,我们就可以用ServerSocket.accept()方法来接受外来的连接。由于这个方法是个阻塞方法,因此,我们要单独创建一个线程来接收和处理外来连接。accept() 方法返回一个java.net.Socket对象来代表接收到的连接。一旦连接建立,接下来我们要做的就是处理HTTP请求了。对此,我们可以使用org.apache.http.protocol.HttpService这个类。这个类提供了一个简单的HTTP处理器服务端的实现。下面的是HttpService的构造方法:

HttpService(
HttpProcessor proc,
ConnectionReuseStrategy connStrategy,
HttpResponseFactory responseFactory)


第一个参数org.apache.http.protocol.HttpProcessor是处理请求和响应的一个接口。org.apache.http.protocol.BasicHttpProcessor是对这个接口的默认实现。

第二个参数org.apache.http.ConnectionReuseStrategy决定了对连接的重用策略。针对这个接口有两种不同的实现,org.apache.http.impl.DefaultConnectionReuseStrategyorg.apache.http.impl.NoConnectionReuseStrategy

第一个对连接进行复用,第二个不复用连接,一般情况下,我们实用第一个。

HttpService依靠最后一个参数去处理和发送HTTP响应。org.apache.http.HttpResponseFactory是一个工厂形式的接口,用来处理和发送到客户端的响应。org.apache.http.impl.DefaultHttpResponseFactory这个类是对这个接口的默认实现。

为了处理不同类型的HTTP请求,我们使用一个基于URI模式的处理映射。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: