- package 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("
我是服务器返回的内容
".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.9
-
-
1、BS架构
- 下面我以 Microsoft Edge 为例,访问我们的服务器
- 用浏览器访问 web 服务器,服务器 控制台(这里指的是 IDEA的控制台 ) 打印的内容是 浏览器 请求标头 的内容
2、CS架构
- 我会用一个小工具代表我们的 客户端 ,这个小工具是 NetAssist V4.3.13 版本的网络调试助手
- 由于 IDEA 软件用的是 UTF-8 编码 所以 我们把 网络调试助手 软件 改为 接收编码为 UTF-8 ,防止我们接收服务器发过来的内容乱码