《Android版Web服务器实现(一)HTTP协议请求头解析》一文中说到了HTTP协议请求头的解析,那么我们要如何得到这个HTTP请求头呢?我们需要监听端口。监听是一直要运行着的,在Android中比较好的方式就是使用服务。下面是实现的代码。
WebServer.java
package com.sparkle.webservice;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.os.IBinder;
import android.util.Log;
import com.sparkle.kits.IP;
public class WebServer extends Service implements Runnable {
private static boolean _isRunning = false;
private static Thread _serverThread = null;
private ServerSocket _listenSocket = null;
private MyLog _myLog = new MyLog(getClass().getName());
private static int _port = Defaults.getPort();
private TcpListener _tcpListener = null;
private static final int WAKE_INTERVAL_MS = 1000;
public WebServer() {
try {
Init();
} catch (IOException e) {
e.printStackTrace();
}
}
private void Init() throws IOException {
_listenSocket = new ServerSocket();
_listenSocket.setReuseAddress(true);
_listenSocket.bind(new InetSocketAddress(_port));
}
public static void Start(Context context) {
if (!_isRunning) {
_isRunning = true;
Intent intent = new Intent(context, WebServer.class

本文介绍了在Android中使用服务(Service)和线程(Thread)来监听HTTP请求的方法。通过WebServer.java类,继承Service并实现Runnable接口,重写onStartCommand和onDestroy方法来启动和关闭监听线程。TcpListener类负责实际的监听操作,当接收到请求时,通过SessionThread进行处理。AndroidManifest.xml中需注册服务。文章还提到了自定义的日志类MyLog用于调试。下篇将讲述如何处理监听到的HTTP请求。

1万+

被折叠的 条评论
为什么被折叠?



