下面是一个简单的 C++ 示例,演示如何使用 UDP 发送数据。这个示例使用了 POSIX socket API,因此适用于 Linux 和 macOS 系统。
#include <iostream>
#include <cstring> // For memset
#include <sys/socket.h> // For socket functions
#include <netinet/in.h> // For sockaddr_in
#include <arpa/inet.h> // For inet_pton
#include <unistd.h> // For close
int main() {
int sockfd;
struct sockaddr_in servaddr;
// 创建 UDP 套接字
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
std::cerr << "Socket creation failed" << std::endl;
return -1;
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET; // IPv4
servaddr.sin_port = htons(8080); // 端口号 (大端序)
// 将目标 IP 地址转换为网络字节顺序
if (inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr) <= 0) {
std::cerr << "Invalid address / Address not supported" << std::endl;
return -1;
}
const char *message = "Hello, UDP server!";
// 发送数据
ssize_t sent_bytes = sendto(sockfd, message, strlen(message),
MSG_CONFIRM, (const struct sockaddr*)&servaddr,
sizeof(servaddr));
if (sent_bytes < 0) {
std::cerr << "Send failed" << std::endl;
close(sockfd);
return -1;
}
std::cout << "Sent message: " << message << std::endl;
// 关闭套接字
close(sockfd);
return 0;
}
注意事项:
- 在运行代码之前,请确保你已经安装了支持 POSIX 的编译器,并且你的操作系统是 Unix-like(如 Linux 或 macOS)。
- 如果目标地址和端口不同,请相应地修改
inet_pton
和htons
函数中的参数。 - 请在本地网络上有一个正在监听指定 UDP 端口的服务,否则发送的数据将不会被任何人接收。
内容由零声教学AI助手提供,问题来源于学员提问