javapackage com.csdn.http; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class WebServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8899); while (true) { Socket clientSocket = serverSocket.accept(); //接收客户端发送过来的数据 InputStream inputStream = clientSocket.getInputStream(); byte[] bytes = new byte[1024]; int length = inputStream.read(bytes); System.out.println(new String(bytes, 0, length)); clientSocket.shutdownInput(); //给客户端返回数据 OutputStream outputStream = clientSocket.getOutputStream(); //服务器在返回内容之前,要先返回响应头 outputStream.write("HTTP/1.1 200 OK\r\n".getBytes());//每个响应头后面都要有一个换行 outputStream.write("Date: Fri, 20 Oct 2023 12:54:09 GMT\r\n".getBytes()); outputStream.write("Content-type:text/html;charset=utf-8\r\n".getBytes()); //所以的响应头全部写完以后,再写一个换行 outputStream.write("\r\n".getBytes()); //服务器返回的内容 outputStream.write("<h1 style='color:red'>我是服务器返回的内容</h1>".getBytes()); // clientSocket.shutdownInput(); clientSocket.close(); } } } D:\Java\jdk-17\bin\java.exe GET / HTTP/1.1 Host: 192.168.14.55:8899 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 GET /favicon.ico HTTP/1.1 Host: 192.168.14.55:8899 Connection: keep-alive User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.46 Accept: image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8 Referer: http://192.168.14.55:8899/ Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.91、BS架构
- 下面我以 Microsoft Edge 为例,访问我们的服务器
- 用浏览器访问 web 服务器,服务器控制台打印的内容是 浏览器 响应 的内容
2、CS架构
- 我会用一个小工具代表我们的 客户端 ,这个小工具是 NetAssist V4.3.13 版本的网络调试助手
- 由于 IDEA 软件用的是 UTF-8 编码 所以 我们把 网络调试助手 软件 改为 接收编码为 UTF-8 ,防止我们接收服务器发过来的内容乱码
手写简易的web服务器(理解BS架构和CS架构)
丁总学Java2023-10-21 2:34
相关推荐
Chenyu_3104 小时前
DPDK、TC 和 XDP:Linux 高性能网络到底在优化什么乔旭伟6 小时前
Linux 服务器备份实战:一致性快照、日志归档与恢复演练乔旭伟6 小时前
Linux 服务器安全加固实战:SSH、防火墙、补丁与入侵排查裕晟资质规划7 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界刘胡子大叔8 小时前
备份包只有 1.5K?无足鸟ICT8 小时前
【RHCA+】RPM包验证和数字证书小范的技术工坊8 小时前
Linux应用开发(文件属性)开开心心就好9 小时前
多份文档怎么批量打印?支持多种格式南棋网络安全10 小时前
ssrf跨站请求伪造(保姆级教程)开开心心就好11 小时前
文件被占用删不掉?解锁工具强制删除






