Skip to content

secretxuan/network_sys

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C++ 网络编程学习项目

一个专为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: 基础Echo服务器

# 终端1: 启动服务器
./bin/echo_server

# 终端2: 启动客户端
./bin/echo_client

示例2: 多线程服务器

# 终端1: 启动服务器
./bin/multithread_server

# 终端2-N: 启动多个客户端测试并发
./bin/multithread_client

示例3: HTTP客户端

# 发送HTTP请求
./bin/http_demo

示例4: 完整服务器

# 启动集成所有功能的服务器
./bin/full_server

学习路径

  1. Socket基础 (docs/01_socket_basics.md)

    • 理解socket、bind、listen、accept的含义
    • 学习TCP三次握手和四次挥手
    • 运行 01_basic_echo 示例
  2. 并发编程 (docs/03_concurrency.md)

    • 掌握多线程处理客户端连接
    • 学习线程安全和互斥锁
    • 运行 02_multithread_server 示例
  3. HTTP协议 (docs/04_http_protocol.md)

    • 理解HTTP请求和响应格式
    • 实现简单的HTTP客户端
    • 运行 03_http_client_demo 示例
  4. 综合应用

    • 集成所有模块构建完整服务器
    • 运行 04_full_server 示例

核心模块说明

Socket类

封装底层socket API,提供RAII资源管理,自动关闭socket,避免资源泄露。

TcpServer类

实现TCP服务器,支持单线程/多线程模式,提供回调接口处理客户端消息。

HttpClient类

实现HTTP/1.1客户端,支持GET和POST请求,自动���析响应。

Logger类

线程安全的日志系统,支持多种日志级别,可输出到控制台或文件。

系统要求

  • 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,设置断点后运行。

参考资料

许可证

本项目仅用于学习目的。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors