在本模块中,我们将深入探讨 Java 网络编程的核心知识。这些技能是构建 MiniTomcat 的基石,因为 MiniTomcat 需要基于 HTTP 协议与客户端(例如浏览器)进行通信。掌握网络编程的基本概念,将有助于我们更好地理解 HTTP 连接、请求与响应等关键组件的实现原理。


1. Java 网络编程概览

Java 中的网络编程主要基于 SocketServerSocket 类实现。Socket 是网络通信的端点,负责在客户端与服务器之间传输数据。

  • Socket:通常用于客户端,负责与服务器建立连接并进行数据交换。
  • ServerSocket:通常用于服务器端,负责监听客户端的连接请求并作出响应。

2. 理解 TCP 与 UDP

在网络通信中,常见的传输层协议主要有两种:

  • TCP(传输控制协议):面向连接,数据传输可靠,适用于 HTTP 等需要确保数据完整性和顺序的协议。
  • UDP(用户数据报协议):无连接,数据传输不可靠但速度快,适用于视频流、在线游戏等对实时性要求较高的应用。

在 MiniTomcat 项目中,我们主要使用 TCP 协议 来处理客户端的 HTTP 请求,以确保通信的可靠性。

3. Socket 与 ServerSocket 实战

3.1 服务端实现 (ServerSocket)

通过 ServerSocket,我们可以创建一个服务器实例并等待客户端的连接请求。以下是一个简单的服务端示例:

import java.io.*;
import java.net.*;

public class SimpleServer {
    public static void main(String[] args) {
        try (ServerSocket serverSocket = new ServerSocket(8080)) {
            System.out.println("Server is listening on port 8080");
            while (true) {
                Socket socket = serverSocket.accept();
                System.out.println("New client connected");
                
                // 处理客户端请求
                InputStream input = socket.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                    // HTTP 请求头以空行结束
                    if (line.isEmpty()) break;
                }
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.2 客户端实现 (Socket)

客户端通过 Socket 连接服务器,发送请求并接收响应。以下是一个简单的客户端示例:

import java.io.*;
import java.net.*;

public class SimpleClient {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 8080)) {
            OutputStream output = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(output, true);
            writer.println("Hello, Server!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. 实践任务 📝

  1. 创建一个简单的 Java 服务器:监听特定端口,并接受客户端的连接请求。
  2. 创建一个 Java 客户端:连接到你刚创建的服务器,并发送一条简单的信息。

这些练习将帮助你理解服务器和客户端之间的基本通信方式。完成后,你将为实现 MiniTomcat 的 HTTP 连接组件做好准备!有疑问随时问我 🦌