首页 > 解决方案 > QTCP/IP 接收问题

问题描述

问题:由于发送端的 dataRate 相同,因此每次接收端丢失一个流。

这只是一个示例代码,因此请忽略拼写错误或语法错误。发送方:

timer1.setInterval(1000) with Message_Id = 1
timer2.setInterval(100) with Message_Id = 2
timer3.setInterval(100) with Message_Id = 3

//data is sent in the timer Handlder
//data is sent successfully and cross-checked

接收方:

QByteArray array;
QDataStream stream(&array:QIODevice:ReadOnly)
array = tcpServerConnection->readAll()

MyMessageType message;
stream >> message;

switch(message.id){
case 1:{
  MessageType1 message1;
  stream >> message1;}
  break;
case 2:{
  MessageType2 message2;
  stream >> message2;}
  break;
case 3:{
  MessageType3 message3;
  stream >> message3;}
  break;}}

所以在这种情况下,如果 Message2 和 Message3 具有相同的计时器间隔,则只接收其中一个。单独接收每条消息都很好。

同样具有不同的随机间隔,每条消息都可以正常接收。

发送 Qdatastream 时,相同的时间间隔会出现什么问题?

标签: qtqt5qtcpsocketqtcpserverqdatastream

解决方案


推荐阅读