你问的“Linux C++ 配置怎样配网络”,通常有两种理解:
下面我分别说明,重点放在 C++ 网络编程配置 上。
Linux 网络编程主要用:
<sys/socket.h><netinet/in.h><arpa/inet.h><unistd.h>不需要额外安装库(POSIX 标准)
g++ server.cpp -o server
g++ client.cpp -o client
如果是多线程:
g++ server.cpp -o server -lpthread
#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;
}
#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;
}
ip addr
ping 127.0.0.1
ping www.baidu.com
# 开放端口
sudo ufw allow 8080
或(CentOS):
sudo firewall-cmd --add-port=8080/tcp
如果你不想用原生 socket:
#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));
❌ 连不上
✅ 检查:
如果你是指 “如何配置 Linux 服务器网络(静态 IP / DNS)” 或 “CMake 怎么配置网络项目”,可以告诉我具体场景,我可以直接给你对应配置。