QUDPSocket广播用法
1.客户端广播
QUdpSocketpClientUDP = new QUdpSocket();
QByteArray datagram = "find server";
//发送数据,指定目标ip和目标端口号(但客户端自身端口无需指定)
//"255.255.255.255"有限广播地址
//"192.168.88.255" 子网定向广播 客户端发送成功,服务端收不到时重启电脑试下
pClientUDP ->writeDatagram(datagram,QHostAddress("192.168.88.255"),512345);
2.服务端接收信息
QUdpSocketpServerUDP = new QUdpSocket();
pServerUDP->bind(512345,QAbstractSocket::ShareAddress);
QObject::connect(pServerUDP , QOverload<>::of(&QUdpSocket::readyRead), this,this
{});
3.socket涉及到的两种缓冲
3.1操作系统内核缓冲(隐式缓冲):
socket(柜子)->固定格子数->每个格子(一个upd数据报)
大小由操作系统网络栈全局设置(如net.core.rmem_max等参数),通常足够大
3.2Qt应用层缓冲(显示缓冲):
QTcpSocket使用此缓冲。因为TCP是数据流
4.如果你在编写UDP程序时遇到数据丢失的问题,你的排查重点应该是:程序的读取逻辑是否足够高效,以及操作系统的默认缓冲区是否够用.
浙公网安备 33010602011771号