商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu下C++网络编程怎么做

Ubuntu下C++网络编程怎么做

  发布于2026-07-12 阅读(0)

扫一扫,手机访问

在Ubuntu下进行C++网络编程,其实并没有想象中那么复杂。核心思路就是走完“安装环境→写代码→编译→运行”这几步,当然,如果想测试,还得顺手写个客户端。下面就把完整的操作流程拆开来说。

Ubuntu下C++网络编程怎么做

第一步:装好必要的库和工具

打开终端,先跑一遍更新,然后安装编译器和OpenSSL库——后者主要给加密通信用的,不过多数网络程序都会依赖它。

sudo apt-get update
sudo apt-get install build-essential libssl-dev

装完之后,GCC、G++就都有了,OpenSSL的库文件也一并到位。

第二步:写一个C++网络程序

用你习惯的编辑器(vim、nano、VSCode都行)创建一个文件,比如 server.cpp。下面是一个最基础的TCP服务器示例,它做的事情很纯粹:创建一个socket,绑定端口,监听,然后接收一个客户端的连接,读数据,再回一句“Hello from server”。

#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};

    // 创建socket文件描述符
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {
        perror("socket failed");
        exit(EXIT_FAILURE);
    }

    // 设置socket选项,允许地址重用
    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);

    // 绑定socket到8080端口
    if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {
        perror("bind failed");
        exit(EXIT_FAILURE);
    }

    // 开始监听,最大连接数设为3
    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 << "Message from client: " << buffer << std::endl;

    // 向客户端发送响应
    send(new_socket, "Hello from server", 18, 0);
    std::cout << "Hello message sent" << std::endl;

    // 关闭连接和socket
    close(new_socket);
    close(server_fd);
    return 0;
}

把这段代码保存为 server.cpp

第三步:编译程序

终端里执行下面的命令,生成可执行文件 server

g++ server.cpp -o server

如果没有报错,当前目录下就会出现一个叫 server 的文件。

第四步:运行服务器

直接启动它:

./server

程序就开始监听本机的8080端口,等着客户端来敲门。

第五步:创建一个客户端来测试(可选)

要是想验证服务器是不是真的能工作,可以写一个简单的TCP客户端。同样新建一个文件 client.cpp,内容如下:

#include 
#include 
#include 
#include 
#include 

int main() {
    int sock = 0;
    struct sockaddr_in serv_addr;
    char buffer[1024] = {0};

    // 创建socket
    if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
        std::cout << "Socket creation error";
        return -1;
    }

    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(8080);

    // 将IP地址从文本转为二进制
    if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
        std::cout << "Invalid address/ Address not supported";
        return -1;
    }

    // 连接到服务器
    if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
        std::cout << "Connection Failed";
        return -1;
    }

    // 向服务器发送数据
    send(sock, "Hello from client", 18, 0);
    std::cout << "Hello message sent" << std::endl;

    // 读取服务器返回的数据
    read(sock, buffer, 1024);
    std::cout << "Message from server: " << buffer << std::endl;

    // 关闭socket
    close(sock);
    return 0;
}

保存后编译并运行客户端:

g++ client.cpp -o client
./client

终端会依次显示“Hello message sent”和服务器回复的“Message from server: Hello from server”。

以上就是Ubuntu下C++网络编程最基础的一套流程。掌握了这个骨架,你就可以根据自己的需求往上加逻辑——比如支持多客户端、加密传输、自定义协议等等。说白了,网络编程的核心就是socket那几个函数,剩下的都是围绕它做文章。

本文转载于:https://www.yisu.com/ask/43602915.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注