要通过UDP将命令发送给另一个程序,需要按照以下步骤进行操作:

  1. 创建UDP套接字:使用socket()函数创建UDP套接字。

  2. 绑定套接字:使用bind()函数将套接字绑定到本地IP地址和端口号。

  3. 接收命令:使用recvfrom()函数接收命令。

  4. 处理命令:对接收到的命令进行处理,例如解析、执行等。

  5. 发送响应:使用sendto()函数将响应发送给发送方。

以下是一个示例代码:

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

#define PORT 8888
#define MAX_BUFFER_SIZE 1024

int main() {
    int sockfd;
    struct sockaddr_in server_addr, client_addr;
    socklen_t client_addr_len = sizeof(client_addr);
    char buffer[MAX_BUFFER_SIZE];

    // 创建UDP套接字
    sockfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (sockfd < 0) {
        std::cerr << "Failed to create socket." << std::endl;
        exit(EXIT_FAILURE);
    }

    // 绑定套接字
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = INADDR_ANY;
    server_addr.sin_port = htons(PORT);
    if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
        std::cerr << "Failed to bind socket." << std::endl;
        exit(EXIT_FAILURE);
    }

    std::cout << "Listening on port " << PORT << "..." << std::endl;

    while (true) {
        // 接收命令
        memset(buffer, 0, sizeof(buffer));
        int num_bytes = recvfrom(sockfd, buffer, MAX_BUFFER_SIZE, 0, (struct sockaddr*)&client_addr, &client_addr_len);
        if (num_bytes < 0) {
            std::cerr << "Failed to receive command." << std::endl;
            continue;
        }

        std::cout << "Received command: " << buffer << std::endl;

        // 处理命令
        // ...

        // 发送响应
        std::string response = "Command executed successfully.";
        sendto(sockfd, response.c_str(), response.length(), 0, (struct sockaddr*)&client_addr, client_addr_len);
    }

    close(sockfd);

    return 0;
}
``
如何通过udp将命令发送给另一个程序 c++

原文地址: https://www.cveoy.top/t/topic/g8AX 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录