qt - QTCP/IP 接收问题
问题描述
- 我有一个接收不同数据流的 QTCPServer 接收器
- 每个 QDataStream 以固定间隔接收,即 10 Hz 和 1Hz
- 在所有这些数据流中,两个流以相同的 10Hz 速率接收
问题:由于发送端的 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 时,相同的时间间隔会出现什么问题?
解决方案
推荐阅读
- javascript - 在 date-fns 库中将 UTC 时间戳字符串转换为人类可读的格式
- android - Spotify-使用来自 Spotify 媒体播放器的自定义播放列表播放歌曲
- node.js - 使用 Lambda 函数和 Node.js 更新 DynamoDB 表
- docker - 使用 docker、nginx 和多个前端存储库进行持续交付
- python - 从数据框字典中提取列
- c++ - C ++:根据模板字段排序到新数组中
- ios - 没有这样的模块“Firebase”
- python - 在opencv中检测嵌套形状
- docker - 如何将来自 Google Secret Manager 的秘密作为环境变量注入 Kubernetes Pod?
- swift - 具有多个部分和 Firebase 的 collectionView