一个专为C++初学者设计的网络编程学习项目,通过循序渐进的方式掌握Linux下的socket编程。
- 渐进式学习: 从基础TCP通信到多线程服务器,逐步深入
- 详细注释: 每个关键函数都有详细的中文注释,解释核心概念
- 完整示例: 提供4个可运行的示例程序,每个都演示不同的技术点
- 现代C++: 使用C++11标准,包含智能指针、lambda、线程库等特性
- 语言: C++11
- 操作系统: Linux (POSIX socket API)
- 构建工具: CMake 3.10+
- 并发: std::thread
cpp-network-programming-tutorial/
├── include/ # 头文件
│ ├── socket.h # Socket基础类
│ ├── tcp_server.h # TCP服务器
│ ├── http_client.h # HTTP客户端
│ ├── logger.h # 日志系统
│ └── utils.h # 工具函数
├── src/ # 源文件
├── examples/ # 示例程序
│ ├── 01_basic_echo/ # 基础Echo服务器
│ ├── 02_multithread_server/ # 多线程服务器
│ ├── 03_http_client_demo/ # HTTP客户端
│ └── 04_full_server/ # 完整服务器
└── docs/ # 学习文档
# 创建构建目录
mkdir build
cd build
# 配置和编译
cmake ..
make
# 所有可执行文件在 build/bin/ 目录# 终端1: 启动服务器
./bin/echo_server
# 终端2: 启动客户端
./bin/echo_client# 终端1: 启动服务器
./bin/multithread_server
# 终端2-N: 启动多个客户端测试并发
./bin/multithread_client# 发送HTTP请求
./bin/http_demo# 启动集成所有功能的服务器
./bin/full_server-
Socket基础 (
docs/01_socket_basics.md)- 理解socket、bind、listen、accept的含义
- 学习TCP三次握手和四次挥手
- 运行
01_basic_echo示例
-
并发编程 (
docs/03_concurrency.md)- 掌握多线程处理客户端连接
- 学习线程安全和互斥锁
- 运行
02_multithread_server示例
-
HTTP协议 (
docs/04_http_protocol.md)- 理解HTTP请求和响应格式
- 实现简单的HTTP客户端
- 运行
03_http_client_demo示例
-
综合应用
- 集成所有模块构建完整服务器
- 运行
04_full_server示例
封装底层socket API,提供RAII资源管理,自动关闭socket,避免资源泄露。
实现TCP服务器,支持单线程/多线程模式,提供回调接口处理客户端消息。
实现HTTP/1.1客户端,支持GET和POST请求,自动���析响应。
线程安全的日志系统,支持多种日志级别,可输出到控制台或文件。
- Linux操作系统 (Ubuntu 16.04+, CentOS 7+)
- g++ 4.8+ (支持C++11)
- CMake 3.10+
- pthread库
Q: 编译时提示找不到pthread?
A: 确保安装了pthread库,CMakeLists.txt中已配置链接pthread。
Q: 端口被占用怎么办?
A: 修改示例程序中的端口号,或等待几分钟让系统释放端口。
Q: 如何调试程序?
A: 使用gdb调试: gdb ./bin/echo_server,设置断点后运行。
本项目仅用于学习目的。