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());
}
}

相关推荐
imatt9 小时前
Qt Creator 在Windows下编译信息乱码
windows·qt
赤水无泪9 小时前
qt中图标、名称的设置方式
开发语言·qt
房开民13 小时前
Qt TCP 服务器开发实战:与 VisionMaster OCR 通信
服务器·qt·tcp/ip
熬夜苦读学习13 小时前
QT_信号和槽
开发语言·qt
Quz14 小时前
QML 文字入场动画:逐字弹出、逐字飞入、3D 飞入
qt·3d·动画·qml
豆浆D油条1 天前
QT容器类QList调用erase崩溃
开发语言·qt·rpc
杜子不疼.1 天前
【Qt常用控件】WindowTitle 与 WindowIcon:窗口标题和图标
开发语言·qt
sycmancia2 天前
Qt——另一种创建线程的方式
开发语言·qt
sycmancia2 天前
Qt——多线程与界面组件的通信
开发语言·qt·算法
Quz3 天前
QML 基础组件专栏目录(V1)
qt·qml