温馨提示×

linux c++如何学网络编程

小樊
47
2026-09-23 09:14:24
栏目: 编程语言

学习 Linux 下的 C/C++ 网络编程,建议按「基础 → 系统调用 → 实战 → 进阶」的路径来。下面给你一个比较系统的学习路线和资源。


一、先打好基础(很重要)

在写网络程序前,你需要理解:

1. 计算机网络基础

重点掌握:

  • OSI / TCP/IP 模型
  • IP、端口、MAC
  • TCP 与 UDP 的区别
  • 三次握手、四次挥手
  • 滑动窗口、拥塞控制(理解即可)

✅ 推荐:

  • 《计算机网络:自顶向下方法》
  • B 站搜「计算机网络 谢希仁」

2. Linux 基础

你需要会用:

  • shell 基本命令
  • gcc / g++ 编译
  • make / CMake
  • 多进程 / 多线程
  • 文件 IO(read/write)

✅ 推荐:

  • 《鸟哥的 Linux 私房菜》
  • 《UNIX 环境高级编程(APUE)》

二、核心:Socket 网络编程

1. 最基础的 Socket API(必须手写)

重点函数:

socket()
bind()
listen()
accept()
connect()
send() / recv()
close()

学习顺序:

  1. TCP 回显服务器(单连接)
  2. TCP 多进程服务器
  3. TCP 多线程服务器
  4. UDP 服务器/客户端

✅ 推荐书:

  • 《UNIX 网络编程 卷1:套接字联网 API》(经典)
  • 《Linux 高性能服务器编程》(游双,强烈推荐)

2. I/O 模型(重点)

理解并对比:

  • 阻塞 IO
  • 非阻塞 IO
  • I/O 多路复用
    • select
    • poll
    • epoll(Linux 核心)

✅ 必须掌握:

  • epoll 的 ETLT 模式
  • 为什么 epoll 高性能

三、实战项目(非常重要)

不要只看书,要写代码!

初级项目

  • TCP 聊天室(多线程)
  • 文件传输工具
  • 简单的 HTTP 服务器

中级项目

  • 基于 epoll 的并发服务器
  • 线程池 + 网络库
  • 简单 RPC 框架

进阶方向

  • Reactor / Proactor 模型
  • 零拷贝(sendfile / mmap)
  • 定时器(时间轮)
  • 协程(libco / boost.coroutine)

四、推荐学习资源

  1. 《UNIX 网络编程 卷1》
  2. 《Linux 高性能服务器编程》
  3. 《APUE》

视频

  • B 站:
    • 「Linux C++ 网络编程」
    • 「muduo 网络库讲解」

开源代码(必看)

  • muduo(陈硕)
  • libevent
  • redis 网络模块

五、一个最小 TCP 服务器示例(思路)

int listenfd = socket(AF_INET, SOCK_STREAM, 0);
bind(listenfd, ...);
listen(listenfd, 10);

while (true) {
    int connfd = accept(listenfd, ...);
    // 交给线程 / epoll 处理
}

六、学习建议总结

✅ 先做能跑的小程序
✅ 再理解为什么这样写
✅ 最后看别人怎么优化

如果你愿意,我可以:

  • 给你一份 30 天学习路线
  • 或带你 从 0 写一个 epoll 服务器
  • 或讲 muduo 源码

你想从哪一步开始?

0