学习 Linux 下 C++ 网络编程,建议按“基础 → 系统编程 → 网络编程 → 实战项目”的路径来,下面给你一个比较清晰、可执行的学习路线。
一、先打基础(很重要)
1. 必须掌握的基础
- C++ 基础
- 指针、引用
- STL(vector / map / string)
- 类与对象、构造函数、析构
- 智能指针(unique_ptr / shared_ptr)
- Linux 基础
- 常用命令(ls / cd / ps / netstat / tcpdump)
- 权限、进程、线程概念
- 简单 shell 使用
2. 推荐书籍
- 《C++ Primer》
- 《Linux 命令行与 shell 脚本编程大全》
二、Linux 系统编程(网络编程前提)
网络编程本质是 系统调用 + I/O,所以要先学系统编程。
需要掌握的内容
- 文件 I/O
- open / read / write / close
- 进程
- 线程(pthread 或 C++11 thread)
- 进程间通信(IPC)
- I/O 模型(重点)
- 阻塞 / 非阻塞
- I/O 多路复用:select / poll / epoll
推荐资料
- 《UNIX 环境高级编程》(APUE)
- 《Linux 高性能服务器编程》(游双)
三、核心:Socket 网络编程
1. 基础 Socket 编程
掌握 TCP / UDP 基本流程:
TCP 服务器
socket → bind → listen → accept → recv/send → close
TCP 客户端
socket → connect → send/recv → close
UDP
socket → bind → recvfrom / sendto
2. 必学知识点
- IP / 端口 / 字节序(htons / ntohs)
- 阻塞 vs 非阻塞 socket
- 粘包与拆包
- 心跳机制
- 优雅关闭连接
四、进阶:高性能网络编程
1. I/O 多路复用(重点)
select(了解)
poll(了解)
- ✅
epoll(必须精通)
- LT 与 ET 模式
- epoll + 非阻塞 socket
2. 并发模型
- 多进程
- 多线程
- Reactor 模型
- 半同步半异步模型
3. 现代 C++ 网络库(推荐学习)
- ✅ libevent
- ✅ muduo(陈硕)(强烈推荐)
- boost.asio(偏现代 C++)
五、实战项目(非常重要)
入门项目
- TCP 回显服务器
- 简单聊天室(单线程 → 多线程 → epoll)
进阶项目
- 基于 epoll 的 HTTP 服务器
- 文件传输工具
- 简易 RPC 框架
高级项目
- 高并发聊天服务器
- 游戏网关
- 中间件(类似 Redis 简化版)
六、学习顺序建议(可直接照做)
- C++ 基础(1~2 周)
- Linux 命令 + 系统编程(2~3 周)
- Socket 基础(1 周)
- epoll + 多线程(2 周)
- 写一个 epoll 聊天室
- 学 muduo / libevent
- 做 HTTP 服务器
七、常见误区提醒
❌ 一上来就用框架
❌ 只学理论不写代码
❌ 忽视 epoll 和线程安全
✅ 多抓包(tcpdump / wireshark)理解协议
如果你愿意,我可以:
- 给你 具体学习时间表
- 直接给你 epoll + C++ 示例代码
- 按你目标(校招 / 工作 / 兴趣)定制路线
你现在是 新手 / 有 C++ 基础 / 有 Linux 基础 哪一种?