日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

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

發(fā)布時間:2025/3/15 java 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java笔记-使用ServerSocket构建HTTP服务器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

運行截圖如下;

瀏覽器訪問:

后端打印:

項目結(jié)構(gòu)如下:

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

總結(jié)

以上是生活随笔為你收集整理的Java笔记-使用ServerSocket构建HTTP服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。