🌈个人主页 :一条泥憨鱼 (欢迎各位大佬莅临)
🎬精选专栏:数据结构与算法 ,Java,苍穹外卖日记,AI学习,JavaWeb

前言:
很多Java初学者学到网络编程时都会有一种感觉:
看书的时候觉得挺简单,真正写代码的时候完全不知道客户端和服务器是怎么通信的。
尤其是:
-
Socket是什么?
-
TCP和UDP有什么区别?
-
为什么要建立连接?
-
聊天软件到底是怎么实现的?
今天我们就来彻底搞懂Java网络编程。
看完这篇文章,你不仅能理解网络通信原理,还能亲手写出一个简单聊天室哦。
一、什么是网络编程?

数据从一个设备发送到另一个设备,这就是网络通信。
而Java网络编程:
本质上就是让两个程序通过网络进行数据交换。
二、为什么需要网络编程?
如果没有网络编程:
电脑A
电脑B
彼此完全独立。
无法:
-
聊天
-
文件传输
-
在线游戏
-
网页访问
-
视频通话
而有了网络编程:
电脑A ←→ 网络 ←→ 电脑B
程序之间就能交流了。
三、网络编程三要素
学习网络编程之前,必须认识三个核心概念。
1、IP地址
IP地址相当于:
设备在网络中的身份证号
例如:
192.168.1.100
或者:
127.0.0.1
localhost是什么?
很多同学经常看到:
localhost
其实就是:
127.0.0.1
表示:当前电脑自己
举个例子:
你给自己发消息:
我 → 我
对应:
127.0.0.1
2、端口号
有了IP还不够,一台电脑上可能运行很多程序。
例如:
QQ
微信
浏览器
IDEA
MySQL
网络数据到底给谁?这时候就需要端口。

常见端口:
| 端口 | 服务 |
|---|---|
| 80 | HTTP |
| 443 | HTTPS |
| 3306 | MySQL |
| 6379 | Redis |
| 8080 | Tomcat |
3、协议
协议可以理解成:
双方约定好的交流规则
常见协议:
TCP
UDP
HTTP
HTTPS
FTP
四、TCP和UDP到底是什么?
TCP

特点:
✅ 安全可靠
✅ 数据不丢失
✅ 顺序正确
❌ 速度稍慢
应用:
微信聊天
支付宝
网银
文件传输
UDP

特点:
✅ 快
✅ 开销小
❌ 可能丢包
❌ 顺序可能错乱
应用:
直播
语音
视频会议
游戏
五、Socket是什么?
很多人学到这里开始懵,其实特别简单。
Socket翻译过来:套接字
你可以理解成:网络通信的插座

Java网络编程最核心的类:
Socket
ServerSocket
六、Socket通信流程
整个过程如下:
七、第一个TCP程序
实现:
客户端发送:
你好服务器
服务器回复:
你好客户端
服务端代码
java
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws Exception {
// 创建服务器
ServerSocket serverSocket =
new ServerSocket(8888);
System.out.println("服务器启动成功...");
// 等待客户端连接
Socket socket =
serverSocket.accept();
System.out.println("客户端已连接");
BufferedReader reader =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
String msg = reader.readLine();
System.out.println("收到消息:" + msg);
PrintWriter writer =
new PrintWriter(
socket.getOutputStream(),
true);
writer.println("你好客户端");
socket.close();
serverSocket.close();
}
}
客户端代码
java
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception {
Socket socket =
new Socket("127.0.0.1",8888);
PrintWriter writer =
new PrintWriter(
socket.getOutputStream(),
true);
writer.println("你好服务器");
BufferedReader reader =
new BufferedReader(
new InputStreamReader(
socket.getInputStream()));
String msg = reader.readLine();
System.out.println(msg);
socket.close();
}
}
八、代码执行流程解析
第一步:服务端启动
java
new ServerSocket(8888);
监听8888端口。
第二步:客户端连接
java
new Socket("127.0.0.1",8888);
第三步:建立TCP连接
客户端 ←→ 服务端
第四步:发送数据
writer.println("你好服务器");
第五步:服务端读取
java
reader.readLine();
第六步:
返回结果
java
writer.println("你好客户端");
整个流程就完成了。
九、实现简单聊天室
真实项目中:一个服务器要服务多个用户,怎么办?

这就是早期聊天室的实现思路。
十、Java网络编程在SpringBoot中的应用
很多同学觉得:
工作中根本没写过Socket。
其实天天都在用。
例如:
浏览器
↓
SpringBoot
本质上也是网络通信。
访问:
http://localhost:8080/user
背后其实就是TCP+Socket+HTTP封装后的结果。
Socket是基础
HTTP是上层协议
十一、面试题汇总
TCP和UDP区别?
TCP:可靠
有连接
速度稍慢
UDP:不可靠无连接
速度快
Socket是什么?
Socket是网络通信接口。
用于实现客户端与服务器的数据交换。
ServerSocket和Socket区别?
ServerSocket:服务器监听连接
Socket:真正负责通信
为什么TCP可靠?
确认机制
重传机制
流量控制
拥塞控制
保证数据正确传输。
HTTP和TCP是什么关系?
HTTP
运行在
TCP之上
HTTP负责规则。
TCP负责传输。
十二、实际开发中的网络编程
目前最常见场景:
Web服务器
即时通讯
游戏服务器
物联网
消息中间件
它们的底层都离不开网络通信。
总结
如果只记一句话:
Java网络编程,本质上就是通过Socket让两个程序能够跨网络交换数据。

简单来说,网络编程其实就是客户端和服务器之间的"打电话"。
Socket负责建立电话线路,TCP负责保证通话质量,而HTTP只是双方约定好的聊天规则。
当你真正理解这一层之后,再去学习Tomcat、SpringBoot、Netty、WebSocket,就会轻松很多。