一、网络编程基础概述
1. 什么是网络编程
在网络通信协议下,不同计算机上运行的程序进行数据传输,就是网络编程。Java 通过java.net包下的 API 实现网络通信,常见应用场景:即时通信、网游、邮件、文件传输等。
2. 两种主流软件架构
| C/S 架构 | Client/Server 客户端 / 服务器 | 用户需安装客户端,体验定制化强,开发维护成本高 |
| B/S 架构 | Browser/Server 浏览器 / 服务器 | 无需安装客户端,通过浏览器访问,维护成本低,体验受浏览器限制 |
二、网络编程三要素(核心基础)
数据在网络中精准传输,必须满足三个核心条件:IP 地址、端口号、通信协议。
1. IP 地址:设备在网络中的唯一标识
IPv4 与 IPv6
- IPv4:32 位地址,总数约 42 亿,目前已耗尽;通过局域网 IP 复用缓解地址不足
- IPv6:128 位地址,总数 2^128,彻底解决地址不足问题
特殊 IP 与常用命令
- 本机回环地址:127.0.0.1 / localhost,永远指向当前设备本机
- CMD 常用命令:
- ipconfig:查看本机 IP 地址
- ping IP:检查与目标地址网络是否连通
Java IP 操作类:InetAddress
// 获取本机IP对象
InetAddress address = InetAddress.getByName("DESKTOP-5033SAM");
// 获取主机名
String name = address.getHostName();
// 获取IP地址字符串
String ip = address.getHostAddress();
2. 端口号:应用程序在设备中的唯一标识
- 取值范围:0~65535(两个字节表示的整数)
- 0~1023:预留给知名网络服务(如 HTTP 80、HTTPS 443)
- 自定义程序推荐使用 1024 以上的端口
- 核心规则:一个端口同一时间只能被一个程序占用
3. 通信协议:数据传输的规则
OSI 七层模型 vs TCP/IP 四层模型
| 应用层 | 应用层 | HTTP、FTP、DNS | 程序员主要关注 |
| 表示层 | |||
| 会话层 | |||
| 传输层 | 传输层 | TCP、UDP | 选择传输协议 |
| 网络层 | 网络层 | IP、ICMP、ARP | 封装 IP 地址 |
| 数据链路层 | 物理 + 数据链路层 | 硬件设备 | 转成二进制传输 |
| 物理层 |
三、UDP 通信编程
1. UDP 协议核心特点
- 无连接:发送前不建立连接,直接发数据包
- 不可靠:不保证数据一定送达,丢包不重传
- 速度快、开销小:适合直播、在线视频、语音通话等对实时性要求高的场景
2. UDP 通信执行流程
基于DatagramSocket(快递站)和DatagramPacket(快递包裹)实现
发送端步骤
接收端步骤
3. 基础代码实现
发送端
public class SendDemo {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
String msg = "hello udp";
byte[] bytes = msg.getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 10086;
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
ds.send(dp);
ds.close();
}
}
接收端
public class ReceiveDemo {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(10086);
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
// 解析数据
byte[] data = dp.getData();
int len = dp.getLength();
System.out.println("收到:" + new String(data,0,len));
ds.close();
}
}
4. UDP 三种通信方式
四、TCP 通信编程
1. TCP 协议核心特点
- 面向连接:通信前必须通过三次握手建立连接
- 可靠传输:保证数据有序、不丢失、不重复
- 传输效率低于 UDP,适合文件上传下载、网页浏览、邮件等对数据完整性要求高的场景
- 基于 IO 流进行数据传输,两端分别为Socket(客户端)和ServerSocket(服务端)
2. TCP 通信执行流程
客户端(Socket)
服务端(ServerSocket)
3. 基础代码实现
客户端
public class TcpClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 10000);
// 发送数据
OutputStream os = socket.getOutputStream();
os.write("你好服务器".getBytes());
// 接收返回
InputStream is = socket.getInputStream();
byte[] buf = new byte[1024];
int len = is.read(buf);
System.out.println("服务端回复:" + new String(buf,0,len));
socket.close();
}
}
服务端
public class TcpServer {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10000);
Socket accept = ss.accept(); // 等待客户端连接
// 读取数据
InputStream is = accept.getInputStream();
byte[] buf = new byte[1024];
int len;
while((len = is.read(buf)) != -1){
System.out.println("收到:" + new String(buf,0,len));
}
// 回复数据
OutputStream os = accept.getOutputStream();
os.write("收到了".getBytes());
accept.close();
ss.close();
}
}
4. 三次握手:TCP 连接建立
目的是确认双方收发能力正常,共三次交互:
5. 四次挥手:TCP 连接断开
目的是确保双方数据都传输完毕,安全断开连接:
五、UDP vs TCP 核心对比
| 连接性 | 无连接 | 面向连接,三次握手 |
| 可靠性 | 不可靠,可能丢包 | 可靠,保证数据完整有序 |
| 传输速度 | 快,开销小 | 稍慢,额外校验开销 |
| 场景 | 直播、语音、视频通话 | 文件传输、网页、邮件 |
| 数据形式 | 数据包 | IO 字节流 |
六、开发避坑指南 ⚠️
七、文末总结
网络编程的核心是三要素:IP 定位设备、端口定位程序、协议约定规则。UDP 快但不可靠,TCP 可靠但稍慢,根据业务场景选型。掌握 Socket 基础通信、三次握手四次挥手原理,是后端网络开发的必备基础。
网硕互联帮助中心


评论前必须登录!
注册