温馨提示×

linux c++网络编程怎么入门

小樊
41
2026-10-11 00:20:39
栏目: 编程语言

下面给你一个循序渐进的 Linux C++ 网络编程入门路线,适合零基础到能写简单服务器/客户端。


一、先打基础(非常重要)

1. C++ 基础

至少掌握:

  • 变量、指针、引用
  • 结构体、类
  • STL(string、vector)
  • 文件操作
  • 多线程基础(std::thread)

2. Linux 基础

  • 常用命令:cd ls pwd mkdir rm
  • 编辑器:vim 或 vscode
  • 编译:g++
  • 进程/线程概念

二、理解网络编程核心概念

1. 网络模型

  • OSI 模型(了解)
  • TCP/IP 模型(重点)
    • 应用层
    • 传输层(TCP / UDP)
    • 网络层
    • 链路层

2. 核心概念

  • IP 地址、端口
  • Socket(套接字)
  • TCP 与 UDP 区别
  • 客户端 / 服务器模型

三、从最基础的 Socket 开始(必学)

TCP 通信流程

服务器端

  1. 创建 socket
  2. bind(绑定端口)
  3. listen(监听)
  4. accept(接受连接)
  5. recv / send
  6. close

客户端

  1. 创建 socket
  2. connect
  3. send / recv
  4. close

四、第一个例子(TCP 回显服务器)

服务端(简化版)

#include <iostream>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>

int main() {
    int server_fd = socket(AF_INET, SOCK_STREAM, 0);

    sockaddr_in addr{};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(8888);
    addr.sin_addr.s_addr = INADDR_ANY;

    bind(server_fd, (sockaddr*)&addr, sizeof(addr));
    listen(server_fd, 5);

    std::cout << "等待连接..." << std::endl;
    int client_fd = accept(server_fd, nullptr, nullptr);

    char buf[1024];
    int n = recv(client_fd, buf, sizeof(buf), 0);
    send(client_fd, buf, n, 0);

    close(client_fd);
    close(server_fd);
}

客户端

#include <iostream>
#include <cstring>
#include <unistd.h>
#include <arpa/inet.h>

int main() {
    int fd = socket(AF_INET, SOCK_STREAM, 0);

    sockaddr_in addr{};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(8888);
    inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr);

    connect(fd, (sockaddr*)&addr, sizeof(addr));
    send(fd, "hello", 5, 0);

    char buf[1024];
    int n = recv(fd, buf, sizeof(buf), 0);
    std::cout << buf << std::endl;

    close(fd);
}

编译:

g++ server.cpp -o server
g++ client.cpp -o client

五、进阶学习路线

阶段 1:基础强化

  • 多客户端(fork / pthread)
  • 错误处理(perror)
  • 阻塞 vs 非阻塞

阶段 2:I/O 模型

  • select
  • poll
  • epoll(Linux 重点)

阶段 3:并发服务器

  • 多线程服务器
  • 线程池
  • Reactor 模型

阶段 4:实战项目

  • 聊天室
  • HTTP 服务器
  • 文件传输工具

六、推荐学习资源

书籍

  • 《Unix 网络编程》(经典)
  • 《Linux 高性能服务器编程》
  • 《C++ Primer》

视频

  • 毛德操 Linux 网络
  • 黑马 / 尚硅谷 Linux C++

练习平台

  • GitHub 搜:epoll chat server
  • 自己写:echo server → chat → http

七、学习建议(很重要)

✅ 先写 裸 socket,不要直接学框架
✅ 理解 epoll 再学 libevent / boost.asio
✅ 每写一个程序,画流程图
✅ 多调试(gdb、netstat)


如果你愿意,我可以:

  • 帮你写一个 epoll 高并发服务器
  • 推荐 具体学习顺序(周计划)
  • 用 图解方式讲 socket 流程

你现在是 完全零基础 还是 有 C++ 基础但不懂网络?

0 踩