Qt UDP组播的应用

来源:互联网 发布:加湿器 类型 知乎 编辑:程序博客网 时间:2024/06/03 18:57

        最近学习了组播的应用。组播传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它能提高了效率。减少了骨干网络出现拥塞的可能性。

        因为最近在看视频传输,对于一个客户端的视频,如果通过组播的方式传输给其他端,那么对于传输效率和处理速度是有非常大的帮助的,所以组播在一些特定领域起到了很大的帮助。

        那么在Qt中一个socket加入组播应该怎么写呢?

multicastsocket = new QUdpSocket(this);    QHostAddress multiAddr("224.2.3.1");//这里要选一个组播地址    if(!multicastsocket->bind(QHostAddress::AnyIPv4,20002,QAbstractSocket::ShareAddress)){        qDebug()<<"连接失败";    }    //设置缓冲区    multicastsocket->setSocketOption(QAbstractSocket::MulticastLoopbackOption,0);    //加入组播组    if(!multicastsocket->joinMulticastGroup(multiAddr)){        qDebug()<<"加入组播失败";    }    //连接信号与槽    connect(multicastsocket,SIGNAL(readyRead()),this,SLOT(dataRecieved()));//dataRecieved是接收端的接收函数

        我觉得比较重要的有下面几点:

        第一是对于发送端它是不需要加入组播的,当然加入也可以,但是理论上只需要接收端进行加入组播并且选择端口进行监听。发送端只需要向选定的组播地址和组播端口发送数据就可以了。

        第二个是其实组播和正常的Qt局域网通信其实差不太多。别忘记了

if(!multicastsocket->joinMulticastGroup(multiAddr)){...}
        这句话,这句话是能接收到数据的关键,也是组播和非组播的区别之一。

原创粉丝点击