学习 Linux C++ 网络编程,建议按“基础 → 系统编程 → 网络编程 → 实战项目”的路线来。下面给你一个清晰、可执行的学习路线。
一、前置基础(必须)
1. C / C++ 基础
至少掌握:
- 指针、引用
- 结构体、类
- STL(vector / map / string)
- 内存管理(new/delete、智能指针)
✅ 推荐:
- 《C++ Primer》
- 刷一点 LeetCode(C++)
2. Linux 基础
必须会:
- 常用命令(ls / cd / grep / ps / top)
- 编辑器(vim 或 vscode)
- 编译(g++ / make / CMake)
- 进程、线程概念
✅ 推荐:
- 《鸟哥的 Linux 私房菜》
- 日常用 Linux 做开发
二、Linux 系统编程(非常重要)
网络编程建立在系统编程之上。
需要掌握
- 文件 I/O(open/read/write)
- 进程(fork / exec / wait)
- 线程(pthread / C++11 thread)
- 同步(互斥锁、条件变量)
- 信号(signal)
- 多路复用基础(select / poll)
✅ 推荐书:
- 《UNIX 环境高级编程》(APUE)⭐⭐⭐
- 《Linux 系统编程》
三、核心:网络编程(重点)
1. 网络基础
理解:
- TCP / UDP 区别
- IP / 端口
- 字节序(大端小端)
- 三次握手 / 四次挥手
✅ 推荐:
- 《计算机网络:自顶向下》
- 看图理解 TCP 状态转换
2. Socket 编程(最核心)
TCP 基础流程
Server
socket → bind → listen → accept → read/write → close
Client
socket → connect → read/write → close
UDP
socket → bind → recvfrom / sendto
✅ 必写程序:
3. I/O 多路复用(面试+实战重点)
学习顺序:
select
poll
epoll(Linux 最重要)⭐
必须理解:
- 水平触发(LT)
- 边缘触发(ET)
- 非阻塞 socket
- reactor 模型
✅ 推荐:
四、C++ 网络编程进阶
1. 多线程网络模型
- 一连接一线程(不推荐)
- 线程池 + epoll
- Reactor / Proactor
2. 常用技术
- 非阻塞 I/O
- 缓冲区设计
- 心跳机制
- 拆包 / 粘包
- 超时处理
五、推荐学习资源(很重要)
书
- 《UNIX 网络编程 卷1》⭐⭐⭐
- 《TCP/IP 详解 卷1》
- 《Linux 高性能服务器编程》(游双)⭐⭐⭐
视频
- 牛客 / B站:Linux C++ 后台开发
- 陈硕《Linux C++ 网络编程实战》
开源项目(必看)
- libevent
- muduo(陈硕,强烈推荐)
- redis(网络部分)
六、实战项目路线(非常重要)
入门
进阶
- 多线程 HTTP 服务器
- epoll 高并发 echo 服务器
高级
- 仿 muduo 网络库
- 简易 RPC 框架
- 游戏服务器 / IM 系统
七、学习建议(血泪经验)
✅ 不要一上来学框架
✅ 一定要自己写 socket 代码
✅ epoll + 多线程是 Linux C++ 后台核心
✅ 多看源码(muduo、redis)
如果你愿意,我可以:
- 给你30天学习计划
- 给你epoll 示例代码
- 帮你选方向(后台 / 游戏 / 嵌入式)
你现在是零基础还是有一定基础?