Java 网络编程基础:协议(Protocol)详解

在计算机网络中,协议是通信的规则和标准,它规定了数据如何格式化、传输、接收与处理。

在 Java 网络编程中,我们主要关注的协议有:TCP、UDP、HTTP、FTP 等。


1️⃣ 什么是网络协议?

网络协议定义了两台主机通信时要遵循的规则,类似于人与人交流时的“语言”。

👉 没有协议,网络通信就像“鸡同鸭讲”。


2️⃣ 常见网络协议及用途

协议 类型 特点 应用场景
TCP 面向连接 可靠、数据有序、速度略慢 网页浏览、文件传输、聊天程序
UDP 无连接 不可靠、数据无序、速度快、效率高 视频直播、语音通话、在线游戏
HTTP 应用层 基于 TCP 的协议,用于浏览器和服务器之间的通信 网站访问、接口调用
FTP 应用层 基于 TCP,用于文件上传与下载 远程文件传输
SMTP 应用层 用于发送电子邮件 邮件客户端发送邮件
POP3/IMAP 应用层 用于接收电子邮件 邮件客户端接收邮件

3️⃣ TCP 与 UDP 对比

对比项 TCP UDP
是否连接 面向连接,需要三次握手 无连接,直接发送
可靠性 高,确保数据不丢失、不重复、不乱序 低,可能丢失或乱序
速度 相对较慢 快,适合实时性要求高的场景
应用举例 网页访问、文件传输、数据库连接 视频通话、直播、游戏、广播

4️⃣ Java 中如何使用这些协议?

协议 Java 类/接口 用途说明
TCP Socket / ServerSocket 客户端/服务端通信
UDP DatagramSocket / DatagramPacket 发送/接收不可靠数据报
HTTP HttpURLConnection / HttpClient 访问 Web 接口、网站等
FTP 第三方库(如 Apache Commons Net) 实现 FTP 上传/下载功能

5️⃣ 示例:使用 TCP 协议实现客户端/服务端通信

✅ 服务端(使用 TCP 协议)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.*;
import java.net.*;

public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器已启动,等待连接...");

Socket socket = server.accept();
System.out.println("客户端已连接:" + socket.getInetAddress());

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = reader.readLine();
System.out.println("收到客户端消息:" + msg);

reader.close();
socket.close();
server.close();
}
}

✅ 客户端(使用 TCP 协议)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.*;
import java.net.*;

public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
writer.write("你好,服务端!\n");
writer.flush();

writer.close();
socket.close();
}
}

总结

概念 说明
协议 规定网络通信规则的标准
TCP 可靠、面向连接的协议,常用于文件/网页通信
UDP 不可靠、无连接的协议,常用于语音/视频/游戏
Java 支持 通过 SocketDatagramSocketHttpURLConnection 等类支持