在 Linux 下用 C++ 配置/使用网络库,通常分三种情况,你先看看自己属于哪一种,再选方案:
适合:学习网络原理、写简单服务、不想引入依赖
核心头文件:
#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);
✅ 优点:零依赖
❌ 缺点:代码繁琐、要自己处理并发
适合:实际项目开发
特点
安装(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));
适合:高并发、事件驱动
libevent 安装
sudo apt install libevent-dev
适合:
适合:Linux 服务端开发
git clone https://github.com/chenshuo/muduo
特点:
如果你不是写 socket,而是写接口:
#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
sudo apt install drogon
特点:
如果你问的是 怎么在项目中引入网络库:
find_package(Boost REQUIRED system)
target_link_libraries(app Boost::system pthread)
g++ main.cpp -o app -lpthread -lboost_system
我可以直接给你一套可运行的项目结构。