发布于2026-07-13 阅读(0)
扫一扫,手机访问
在CentOS上搞C++网络通信,最经典的路径就是套接字(socket)接口——说白了,就是让不同机器上的进程通过IP协议互传数据。整个过程不复杂,但有几个关键步骤得踩实了。下面从环境准备到跑通一个最简单的例子,一步一步来。

先把开发库装上
CentOS默认可能缺几个基础包,主要是glibc-devel和make。一条命令搞定:
sudo yum install glibc-devel make
这一步别跳过,否则后面编译时可能会报找不到头文件的错。
写一个最简单的C++服务端
创建一个文件,比如network.cpp,然后把下面这段代码贴进去。它实现了一个TCP服务端,监听8080端口,收到客户端消息后打印出来,再回一句“Hello from server”。
#include
#include
#include
#include
#include
#include
int main() {
int server_fd, new_socket;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[1024] = {0};
const char* hello = "Hello from server";
// Creating socket file descriptor
if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
perror("socket failed");
exit(EXIT_FAILURE);
}
// Forcefully attaching socket to the port 8080
if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
&opt, sizeof(opt))) {
perror("setsockopt");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(8080);
// Forcefully attaching socket to the port 8080
if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
if (listen(server_fd, 3) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
if ((new_socket = accept(server_fd, (struct sockaddr*)&address,
(socklen_t*)&addrlen)) < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
read(new_socket, buffer, 1024);
std::cout << buffer << std::endl;
send(new_socket, hello, strlen(hello), 0);
std::cout << "Hello message sent\n";
close(new_socket);
close(server_fd);
return 0;
}
这段代码虽然短,但包含了socket编程的完整生命周期:创建、绑定、监听、接受连接、读写数据、关闭。每一步都有基本的错误处理,生产环境当然还要更细致,但作为起步足够了。
用g++编译
终端里敲一行:
g++ -o network network.cpp
如果没有报错,当前目录就会生成一个network的可执行文件。
运行并测试
先在一个终端启动服务端:
./network
然后新开一个终端,用telnet或者nc连上去:
telnet localhost 8080
或者
nc localhost 8080
连上后随便输入一行文字回车,服务端终端就会打印出你输入的内容,并给客户端返回“Hello from server”。整个过程就算跑通了。
当然,这只是一个单连接的单线程示例。真实场景下,需要处理多客户端并发、超时重连、非阻塞I/O等复杂情况。这时候可以考虑引入Boost.Asio、libevent、libuv这类网络库,能省掉不少底层细节。不过,先把基础socket流程走一遍,理解每一行代码的含义,后面的进阶学习会更扎实。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8