ZBLOG

生成udp发送代码

下面是一个简单的 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;
}

注意事项:

  1. 在运行代码之前,请确保你已经安装了支持 POSIX 的编译器,并且你的操作系统是 Unix-like(如 Linux 或 macOS)。
  2. 如果目标地址和端口不同,请相应地修改 inet_ptonhtons 函数中的参数。
  3. 请在本地网络上有一个正在监听指定 UDP 端口的服务,否则发送的数据将不会被任何人接收。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=6456

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?