温馨提示×

Linux C++配置网络库怎么弄

小樊
50
2026-09-11 00:45:37
栏目: 编程语言

在 Linux 下用 C++ 配置/使用网络库,通常分三种情况,你先看看自己属于哪一种,再选方案:


一、直接用系统原生 API(不依赖第三方库)

适合:学习网络原理、写简单服务、不想引入依赖

1️⃣ 基础 socket(TCP/UDP)

核心头文件:

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

简单 TCP 服务端示例

int sock = socket(AF_INET, SOCK_STREAM, 0);

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

bind(sock, (sockaddr*)&addr, sizeof(addr));
listen(sock, 10);

int client = accept(sock, nullptr, nullptr);

✅ 优点:零依赖
❌ 缺点:代码繁琐、要自己处理并发


二、使用成熟 C++ 网络库(推荐)

适合:实际项目开发

✅ 1. Boost.Asio(最常用)

特点

  • 跨平台
  • 支持 TCP / UDP / SSL
  • 异步模型成熟

安装(Ubuntu)

sudo apt install libboost-dev libboost-system-dev

示例(TCP 客户端)

#include <boost/asio.hpp>
using namespace boost::asio;

io_context io;
ip::tcp::socket sock(io);
sock.connect(ip::tcp::endpoint(ip::make_address("127.0.0.1"), 8080));

✅ 2. libevent / libev / libuv

适合:高并发、事件驱动

libevent 安装

sudo apt install libevent-dev

适合:

  • 代理
  • 长连接
  • 高并发服务器

✅ 3. muduo(C++ 高并发库,陈硕)

适合:Linux 服务端开发

git clone https://github.com/chenshuo/muduo

特点:

  • 多线程 Reactor
  • 性能极高
  • 仅支持 Linux

三、HTTP / Web 框架类

如果你不是写 socket,而是写接口:

✅ 1. cpp-httplib(超简单)

#include "httplib.h"

httplib::Server svr;
svr.Get("/hi", [](const auto&, auto& res) {
    res.set_content("Hello", "text/plain");
});
svr.listen("0.0.0.0", 8080);

安装:

sudo apt install nlohmann-json3-dev

✅ 2. Drogon(现代 C++ Web 框架)

sudo apt install drogon

特点:

  • 类似 Spring / ASP.NET
  • 支持 REST / 数据库 / 模板

四、如何“配置”网络库(编译角度)

如果你问的是 怎么在项目中引入网络库:

CMake 示例(Boost.Asio)

find_package(Boost REQUIRED system)
target_link_libraries(app Boost::system pthread)

编译命令

g++ main.cpp -o app -lpthread -lboost_system

五、你可以告诉我这几点,我能给你更精确的方案

  1. 是 TCP / UDP / HTTP / WebSocket?
  2. 要 同步还是异步?
  3. 是否要求 高并发?
  4. 用 Makefile / CMake / vcpkg?

我可以直接给你一套可运行的项目结构。

0 踩