✅ 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 支持 |
通过 Socket 、DatagramSocket 、HttpURLConnection 等类支持 |