详情
使用UDP的writeDatagram发送数据,如果时间到没有获取到返回的数据就弹出消息框,然后断开监听的端口号.
但是遇到连续发送大数据包,会出现抓包查看的时候没有数据发送.
void UdpServer::timeOutSend()
{
if(NEED_SEND == udpTimeEvent)
{
// qDebug()<<"发送一次数据";
sendData(timeToIp,timeToPort,timeToSendData);//sendCount<0的话 无限制发送
if(sendCount>0)
{
sendCount--;
if(sendCount == 0)
{
waitRec = false;
udpTimeEvent = IDLE;
}
}
}
else if(udpTimeEvent == IDLE)
{
timeSend->stop();//没事干 就关掉一切
disConnectUdp();
sendCount = 0;
emit udpMessage("1-发送结束",udpTimeEvent);
if(waitRec == false && timeToNeedMessageBox)
{
timeToNeedMessageBox = false;
emit udpMessage("0-无参数返回",udpTimeEvent);
}
}
}
void UdpServer::sendData(const QString &ip, quint16 port, const QString &data)
{
QByteArray buffer = QHelpApi::hexStrToByteArray(data);
// qDebug()<<"发送IP地址 "<<ip<<" 发送端口号"<<port<<"发送数据 "<<data;
qDebug()<<"发送结果 "<<udpSocket->writeDatagram(buffer, QHostAddress(ip), port);
}
解决方法
1.加长发送后的等待时间,原先等待1000ms就关闭,现在改为等待3000ms关闭.然后抓包就可以看到了有数据发送出去了.