模拟BS服务器分析与模拟BS服务器代码实现
模拟BS服务器分析
模拟BS服务器代码实现
package DemoThreadPool01; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class TCP { public static void main(String[] args) throws IOException { //创建服务器ServerSocket对象 ServerSocket server = new ServerSocket(8080); while (true){ //使用accept获取Socket Socket sc = server.accept(); new Thread(new Runnable() { @Override public void run() { try { //获取InputStream网络字节输入流 InputStream is = sc.getInputStream(); if (is != null) { //创建缓冲流 , 转换为字符缓冲输入流 BufferedReader bw = new BufferedReader(new InputStreamReader(is)); //GET /IOTest/web/index.html HTTP/1.1 String line; line = bw.readLine(); //分割路劲 String[] path = line.split(" "); //获取路径 IOTest/web/index.html String filename = path[1].substring(1); //filename = IOTest/web/index.html System.out.println("filename:" + filename); //创建本地字节输入流 FileInputStream FileInputStream fis = new FileInputStream(filename); OutputStream os = sc.getOutputStream(); //写入Http响应 os.write("HTTP/1.1 200 OK\r\n".getBytes()); os.write("Content-Type:text/html\r\n".getBytes()); //必须要写入空行,否则浏览器不解析 os.write("\r\n".getBytes()); //一读一写浏览器 int len = 0; byte[] bytes = new byte[1024]; while ((len = fis.read(bytes)) != -1) { //写入服务器 os.write(bytes, 0, len); } fis.close(); sc.close(); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)