QUdpSocket发送组播和接受组播数据

需要写一个发送组播的窗口测试程序,就想着顺便也接受显示出来下

QHostAddress address(ip);

udpSend.bind(QHostAddress::AnyIPv4,port,QUdpSocket::ShareAddress);//这里绑定如果注释了也没有问题,组播数据还是可以发送出去,程序运行时会报错

QUdpSocket::leaveMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState

udpSend.leaveMulticastGroup(address);

udpSend.joinMulticastGroup(address);

udpReciver.bind(QHostAddress::AnyIPv4,port,QUdpSocket::ShareAddress);//接受的得一定要绑定

udpReciver.leaveMulticastGroup(address);

udpReciver.joinMulticastGroup(address);

disconnect(&udpReciver, SIGNAL(readyRead()),this, SLOT(readPendingDatagrams()));

connect(&udpReciver, SIGNAL(readyRead()),this, SLOT(readPendingDatagrams()));

如果在程序中发送和接受都绑定,则一定要都用QUdpSocket::ShareAddress

void Widget::readPendingDatagrams()
{
while (udpReciver.hasPendingDatagrams())
{
QByteArray data;
data.resize(udpReciver.pendingDatagramSize());//这里data一定要resize,不然读不出数据
int len = udpReciver.readDatagram(data.data(),udpReciver.size());//这里一定不要使用readAll(),会报错 QIODevice::read (QUdpSocket): device not open
qDebug() << data.toHex();
ui->textEdit->append(data.toHex().constData());
}
}

相关推荐
奥特曼狂扁小怪兽12 小时前
Qt图片上传系统的设计与实现:从客户端到服务器的完整方案
服务器·开发语言·qt
奥特曼狂扁小怪兽12 小时前
Qt节点编辑器设计与实现:动态编辑与任务流可视化(一)
开发语言·qt·编辑器
奥特曼狂扁小怪兽12 小时前
深入解析Qt节点编辑器框架:交互逻辑与样式系统(二)
qt·编辑器·交互
-凌凌漆-13 小时前
【Qt】Qt中QCryptographicHash , QPasswordDigestor 介绍
开发语言·qt
wh_xia_jun19 小时前
Partner 类开发:会议参与者可视化控件
qt
每天敲200行代码2 天前
QT 概述(背景介绍、搭建开发环境、Qt Creator、程序、项目文件解析、编程注意事项)
c++·qt
超级大坏蛋20182 天前
QT .pro文件的常见用法
java·linux·qt
奥特曼狂扁小怪兽2 天前
基于 Qt 实现的动态流程图画板框架设计与实现
qt·microsoft·流程图
ajassi20002 天前
开源 C++ QT Widget 开发(七)线程--多线程及通讯
linux·c++·qt·开源
Forward♞2 天前
Qt——界面美化 QSS
开发语言·c++·qt