Java 网络编程核心:Socket、TCP/UDP 与 HTTP 实战
学习目标
本章将深入探讨 Java 网络编程的核心机制。重点掌握套接字(Socket)编程模型,理解 TCP/IP 与 UDP 协议的区别,并学会使用 URL 和 URLConnection 处理 HTTP 请求。通过实际代码示例,你将能够独立构建客户端与服务器的通信逻辑,解决开发中常见的网络交互问题。
网络编程概述
Java 网络编程本质上是处理不同设备间数据交换的机制。它允许应用程序跨越物理边界进行通信,无论是局域网内的文件传输,还是互联网上的 Web 请求。
主要分类
根据传输协议的不同,Java 网络编程主要分为三类:
- TCP/IP 通信:面向连接、可靠的流式传输,适合对数据完整性要求高的场景。
- UDP 通信:无连接、不可靠的数据报传输,适合实时性要求高但允许少量丢包的场景。
- HTTP 通信:基于 TCP 的应用层协议,用于访问 Web 资源。
套接字编程基础
套接字(Socket)是网络通信的端点。在 Java 中,Socket 代表客户端连接,而 ServerSocket 代表服务器监听端口。
Socket 与 ServerSocket 核心方法
- Socket:负责建立连接后获取输入输出流。
getInputStream():读取对方发送的数据。getOutputStream():向对方发送数据。close():关闭连接释放资源。
- ServerSocket:负责监听指定端口等待连接。
accept():阻塞等待直到有客户端连接。close():关闭服务器监听。
简单 TCP 通信示例
下面是一个最基础的 TCP 回声服务实现。服务器启动后等待连接,收到消息后原样返回。
import java.io.*;
import java.net.*;
// 服务器端
public class TCPServer {
public static void main(String[] args) {
try {
// 创建服务器端套接字,监听 8888 端口
ServerSocket ();
System.out.println();
serverSocket.accept();
System.out.println( + socket.getInetAddress().getHostAddress());
( (socket.getInputStream()));
(socket.getOutputStream(), );
reader.readLine();
System.out.println( + message);
writer.println( + message);
reader.close();
writer.close();
socket.close();
serverSocket.close();
} (IOException e) {
e.printStackTrace();
}
}
}


