欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java笔记-使用ServerSocket构建HTTP服务器

发布时间:2025/3/15 java 22 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java笔记-使用ServerSocket构建HTTP服务器 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

运行截图如下;

浏览器访问:

后端打印:

项目结构如下:

HttpCallback.java

package cn.it1995.http;public interface HttpCallback {byte[] onResponse(String request); }

 HttpServer.java

package cn.it1995.http;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class HttpServer {private boolean mRunning;private HttpCallback mCallback;public HttpServer(HttpCallback Callback) {this.mCallback = Callback;}public void startHttpServer(){if(mRunning){return;}mRunning = true;try {ServerSocket serverSocket = new ServerSocket(80);while (mRunning){Socket accept = serverSocket.accept();ExecutorService threadPool = Executors.newCachedThreadPool();threadPool.execute(new HttpThread(accept, mCallback));}}catch (IOException e) {e.printStackTrace();}} }

 HttpThread.java

package cn.it1995.http;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket;public class HttpThread implements Runnable{private Socket mSocket;private HttpCallback mCallback;public HttpThread(Socket socket, HttpCallback httpCallback){mSocket = socket;mCallback = httpCallback;}@Overridepublic void run() {try {BufferedReader reader = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));String content;StringBuffer request = new StringBuffer();while((content = reader.readLine()) != null&& !content.trim().isEmpty()){request.append(content).append("\n");}System.out.println("request:\n" + request);byte[] response = new byte[0];if(mCallback != null){response = mCallback.onResponse(request.toString());}String responseFirstLine = "HTTP/1.1 200 OK \r\n";String responseHead = "Content-type:" + "text/html" + "\r\n";OutputStream outputStream = mSocket.getOutputStream();outputStream.write(responseFirstLine.getBytes());outputStream.write(responseHead.getBytes());outputStream.write("\r\n".getBytes());outputStream.write(response);mSocket.close();}catch (IOException e) {e.printStackTrace();}} }

 Main.java

package cn.it1995;import cn.it1995.http.HttpCallback; import cn.it1995.http.HttpServer;public class Main {public static void main(String[] args) {System.out.println("start http server");HttpServer server = new HttpServer(new HttpCallback() {@Overridepublic byte[] onResponse(String request) {return "Hello World".getBytes();}});server.startHttpServer();} }

 

源码打包下载地址:

https://github.com/fengfanchen/Java/tree/master/Server

总结

以上是生活随笔为你收集整理的Java笔记-使用ServerSocket构建HTTP服务器的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。