如何通过udp将命令发送给另一个程序 c++
要通过UDP将命令发送给另一个程序,需要按照以下步骤进行操作:
-
创建UDP套接字:使用socket()函数创建UDP套接字。
-
绑定套接字:使用bind()函数将套接字绑定到本地IP地址和端口号。
-
接收命令:使用recvfrom()函数接收命令。
-
处理命令:对接收到的命令进行处理,例如解析、执行等。
-
发送响应:使用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;
}
``
原文地址: https://www.cveoy.top/t/topic/g8AX 著作权归作者所有。请勿转载和采集!