温馨提示×

linux c++配置怎样配网络

小樊
38
2026-09-29 05:49:31
栏目: 编程语言

你问的“Linux C++ 配置怎样配网络”,通常有两种理解:

  1. 在 Linux 下用 C++ 编写网络程序(socket 编程)
  2. Linux 系统本身的网络配置(和在 C++ 程序里使用网络)

下面我分别说明,重点放在 C++ 网络编程配置 上。


一、Linux 下 C++ 网络编程(最常用:Socket)

1️⃣ 基本依赖(一般系统自带)

Linux 网络编程主要用:

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

不需要额外安装库(POSIX 标准)


2️⃣ 编译方式(g++)

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

如果是多线程:

g++ server.cpp -o server -lpthread

3️⃣ TCP 服务端示例(C++)

#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

using namespace std;

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

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

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

    cout << "Server listening..." << endl;

    int client_fd = accept(server_fd, nullptr, nullptr);
    char buf[1024] = {0};
    read(client_fd, buf, sizeof(buf));
    cout << "Client: " << buf << endl;

    send(client_fd, "Hello from server", 18, 0);

    close(client_fd);
    close(server_fd);
    return 0;
}

4️⃣ TCP 客户端示例

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

using namespace std;

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

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

    connect(sock, (sockaddr*)&addr, sizeof(addr));

    send(sock, "Hello", 6, 0);

    char buf[1024] = {0};
    read(sock, buf, sizeof(buf));
    cout << "Server: " << buf << endl;

    close(sock);
    return 0;
}

二、Linux 系统网络配置(C++ 程序运行前)

1️⃣ 查看 IP

ip addr

2️⃣ 测试网络

ping 127.0.0.1
ping www.baidu.com

3️⃣ 防火墙(常见坑)

# 开放端口
sudo ufw allow 8080

或(CentOS):

sudo firewall-cmd --add-port=8080/tcp

三、进阶方案(C++ 网络库)

如果你不想用原生 socket:

  • Boost.Asio(最常用)
  • libevent
  • muduo(国产高性能)
  • Poco

Boost.Asio 示例

#include <boost/asio.hpp>
using namespace boost::asio;
io_context io;
ip::tcp::socket sock(io);

编译:

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

四、常见错误排查

❌ bind: Address already in use
✅ 加:

int opt = 1;
setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));

❌ 连不上
✅ 检查:

  • IP 是否正确
  • 端口是否监听
  • 防火墙

如果你是指 “如何配置 Linux 服务器网络(静态 IP / DNS)” 或 “CMake 怎么配置网络项目”,可以告诉我具体场景,我可以直接给你对应配置。

0 踩