117.info
人生若只如初见

CentOS上C++网络编程如何实现

在CentOS上进行C++网络编程,通常会使用套接字(socket)API。以下是一个简单的TCP服务器和客户端的示例,展示了如何在CentOS上使用C++进行网络编程。

1. 安装必要的工具和库

首先,确保你的CentOS系统上安装了必要的工具和库。你可以使用以下命令安装:

sudo yum update
sudo yum install gcc make

2. 编写TCP服务器代码

创建一个名为tcp_server.cpp的文件,并添加以下代码:

#include 
#include 
#include 
#include 
#include 

#define PORT 8080

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(PORT);

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

3. 编写TCP客户端代码

创建一个名为tcp_client.cpp的文件,并添加以下代码:

#include 
#include 
#include 
#include 
#include 

#define PORT 8080

int main() {
    struct sockaddr_in serv_addr;
    int sock = 0;
    const char* hello = "Hello from client";
    char buffer[1024] = {0};

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

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

    // Convert IPv4 and IPv6 addresses from text to binary form
    if(inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr) <= 0) {
        std::cout << "\nInvalid address/ Address not supported \n";
        return -1;
    }

    if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
        std::cout << "\nConnection Failed \n";
        return -1;
    }

    send(sock, hello, strlen(hello), 0);
    std::cout << "Hello message sent\n";
    read(sock, buffer, 1024);
    std::cout << "Server: " << buffer << std::endl;

    close(sock);

    return 0;
}

4. 编译和运行代码

使用以下命令编译服务器和客户端代码:

g++ -o tcp_server tcp_server.cpp
g++ -o tcp_client tcp_client.cpp

运行服务器:

./tcp_server

在另一个终端运行客户端:

./tcp_client

你应该会看到服务器和客户端之间的通信。

5. 其他注意事项

  • 确保防火墙允许端口8080的流量。
  • 你可以使用netstatss命令来检查端口是否在监听:
netstat -tuln | grep 8080

或者

ss -tuln | grep 8080

通过这些步骤,你可以在CentOS上使用C++进行基本的网络编程。根据需要,你可以扩展这些示例以处理更复杂的网络应用。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe6f1AzsKCQdRAFw.html

推荐文章

  • centos iptables如何阻止恶意IP

    在CentOS系统中,使用iptables来阻止恶意IP是一个常见的安全措施。以下是一些基本步骤和命令,用于配置iptables以阻止特定的IP地址或IP范围: 登录到服务器:

  • centos cpustat命令怎样使用

    cpustat 是一个用于监控 CPU 使用情况的工具,通常作为 sysstat 包的一部分提供。要使用 cpustat 命令,首先需要确保已经安装了 sysstat 包。
    在 CentOS 上...

  • CentOS环境如何进行安全加固

    在CentOS环境中进行安全加固是确保系统稳定性和数据安全的重要步骤。以下是一些关键的安全加固措施:
    账户安全与权限管理 禁用不必要的超级用户:通过查看 ...

  • Java日志分析在CentOS上的技巧

    在CentOS系统上进行Java日志分析,可以采用以下几种技巧和方法:
    1. 查看Java进程日志 使用命令 ps -ef | grep java 查看所有正在运行的Java进程信息,包括...

  • hdfs在centos如何搭建

    在CentOS上搭建Hadoop分布式文件系统(HDFS)是一个相对复杂的过程,需要多个步骤。以下是一个基本的搭建步骤指南,假设你需要搭建一个包含多个节点的HDFS集群。...

  • HDFS如何实现数据的高效存储

    HDFS(Hadoop Distributed File System)是一个高度可扩展、可靠且分布式的文件系统,专为大数据处理而设计。它通过以下几个关键机制实现数据的高效存储: 数据分...

  • 如何使用CentOS Cleanup提高安全性

    CentOS Cleanup 并不是一个官方提供的工具或命令,因此无法直接提供使用该工具提高CentOS安全性的具体步骤。不过,我可以根据一般的安全配置实践,为你提供一些提...

  • Debian下copidar的安全性如何保障

    在Debian操作系统下,copidar的安全性可以通过多种方式来保障。以下是一些关键措施:
    定期更新
    Debian项目通过定期发布更新来修复已知漏洞和提升系统稳...