首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

QUdpSocket接收大量数据丢包,该如何解决

2013-06-19 
QUdpSocket接收大量数据丢包用QUdpSocket监听端口收数据,当数据量大时,如1秒500个udp包,结果存在大量丢包,

QUdpSocket接收大量数据丢包
用QUdpSocket监听端口收数据,当数据量大时,如1秒500个udp包,结果存在大量丢包,不知道什么情况。
开始以为是处理不过来了,后来去掉了后续的处理过程,就仅接收下,可还是大量丢包,有人遇到过吗?
代码很简单,如下:


mMainUdp = new QUdpSocket;
connect(mMainUdp, SIGNAL(readyRead()), this, SLOT(readyReadMain()), Qt::DirectConnection);
mMainUdp->bind(g_mainPort, QUdpSocket::DefaultForPlatform);


void QCAdsDataReceive::readyReadMain()
{

while (mMainUdp->hasPendingDatagrams()) 
{
QByteArray datagram;
datagram.resize(mMainUdp->pendingDatagramSize());
QHostAddress sender;
quint16 senderPort;

mMainUdp->readDatagram(datagram.data(), datagram.size(),
&sender, &senderPort);
procAdsData(datagram);
}
}


[解决办法]
把connect的最后一个参数改为Qt::AutoConnection,或者去掉看看。
[解决办法]
有没有设置socket的接收缓冲区大小
如果没有的话 建议设置为最大的64K 对改进UDP的性能有很大帮助

热点排行