serversocket接http请求并解析,给出代码示例
时间: 2023-08-11 09:34:59 浏览: 110
socket和http实例
下面是一个使用ServerSocket接收HTTP请求并解析的示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class MyHttpServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,监听端口 " + serverSocket.getLocalPort());
while (true) {
Socket socket = serverSocket.accept();
new Thread(new RequestHandler(socket)).start();
}
}
private static class RequestHandler implements Runnable {
private final Socket socket;
public RequestHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = reader.readLine();
if (line == null) {
return;
}
String[] parts = line.split(" ");
String method = parts[0];
String path = parts[1];
System.out.println("接收到请求:" + method + " " + path);
// 解析请求,进行相应的处理
// ...
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
```
在这个示例中,我们使用ServerSocket监听端口8888,并在接收到连接后创建一个新的线程来处理请求。在处理线程中,我们通过socket.getInputStream()方法获取请求内容,然后解析请求行,提取出请求方法和路径。在解析完成后,我们可以进行相应的处理。
需要注意的是,这个示例只是演示了如何使用ServerSocket接收HTTP请求并解析请求行,实际应用中还需要考虑请求头、请求体、请求参数等问题,以及对请求进行安全性校验、异常处理等其他较为复杂的问题。
阅读全文