Linux下udp开发

本文详细介绍了在Linux下进行UDP开发的过程,包括UDP发送方的建立步骤:创建套接字、填充对方地址信息、绑定设备信息、使用sendto()发送和recvfrom()接收数据。同时,展示了两种不同的UDP接收方法,一种基于select()机制,另一种利用fcntl()设置非阻塞模式进行数据接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux UDP开发:


UDP发送方:(客户端)
1、通过socket()函数实现创建套接字。
2、往sockaddr_in结构体中,填充对方的地址信息。
3、通过bind函数,绑定自己设备信息(上一步的sockaddr_in结构体)。
4、通过sendto()发送数据。
5、通过recvfrom()接收数据。

 

udp的建立:


    int m_sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    //选择 AF_INET 的目的就是使用 IPv4 进行通信。
    //SOCK_DGRAM (数据报套接字)
    //1、分组在发送后,可能无序地到达接收端。
    //2、分组可能丢失。如果发生丢失,不会采取任何补救的措施,而且接受端也不必知道有分租丢失。
    //3、数据报分组有尺寸大小的限制,如果超出限制,在某些路由器和节点上就无法传送。
    //4、分组是在不建立连接的情况下被发送到远程进程的。
    //IPPROTO_UDP建立udp的宏。

    if(m_sock  < 0)
    {
        //qDebug("创建套接字失败了");
        return false;
    }

    struct sockaddr_in m_fromAddr;
    memset(&m_fromAddr,0,sizeof(m_fromAddr));
    m_fromAddr.sin_family=AF_INET;    //IP协议家族
   
m_fromAddr.sin_addr.s_addr=htonl(nIpAddr); //htonl()将主机数转换成无符号长整型的网络字节顺序
   
m_fromAddr.sin_port = htons(nPort);//htons()是将整型变量从主机字节顺序转变成网络字节顺序

    if(bind(m_sock,(struct s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值