当前位置: 首页 > news >正文

鸿安建设集团网站织梦网站字体

鸿安建设集团网站,织梦网站字体,天津网站维护,推广普通话ppt课件引言 在udp通信中#xff0c;发送请求后#xff0c;等待接收端的响应#xff0c;有时一个回应被分割成好几次发送#xff0c;这种反馈的形式出现带有随机性#xff0c;正常的情况下是一次反馈所有的数据#xff0c;但是会出现一次反馈被分成好几次反馈。像下面这样…引言 在udp通信中发送请求后等待接收端的响应有时一个回应被分割成好几次发送这种反馈的形式出现带有随机性正常的情况下是一次反馈所有的数据但是会出现一次反馈被分成好几次反馈。像下面这样 请求history 成功响应1,history,arg78,total1794,students232,history,arg65,total1300,students203,history,arg73,total1600,students22 history,ok 失败响应history,error发送请求后接收端会返回给发送端所有的班级历史成绩的信息本应该一次性返回但是若随机出现接收端将要返回的数据分成好几次返回给发送端。像这样 请求history 响应1,history,arg78,total1794,students23发送端接收到的数据并没有一次性返回而是先接收一部分返回的数据过一会儿后又接收到接收端返回的数据 2,history,arg65,total1300,students203,history,arg73,total1600,students22再过一会儿才接收到接收端返回的最后一句 history,ok上面描述的这种情况本文记录的处理数据的方式就是针对于上面所述的不能一次性返回一个响应给发送端。 方案 针对上面不能一次性返回一个响应的情况下面来说一下如何接收这样的数据使数据完整后再针对于上面的响应的格式来处理数据。 udp中常规接收数据的方式 while (m_udp-hasPendingDatagrams()) {QByteArray byteArray;byteArray.resize(m_udp-pendingDatagramSize());QHostAddress ip;quint16 port;qint64 ret m_udp-readDatagram(byteArray.data(),m_udp-pendingDatagramSize(),ip,port);qDebug()QStringLiteral(接收的数据)byteArray.data()QStringLiteral(大小)ret;}上述不能一次性接收返回数据的情况不能用udp中常规接收数据的方式来接收这样接收到的是一部分一部分的需要再在数据处理里改动为了使数据处理按照本文开始时给出的响应格式来解析不改动数据处理部分现在来调整接收数据的代码使传送到数据处理时是一条完整的回复当然必须满足响应数据一次性全部返回和响应数据一部分一部分的返回两种情况。 处理思路 如果是一次性返回响应的数据直接传到数据解析函数中进行数据解析。 如果是一部分一部分的返回响应的数据就将每一次返回的数据进行追加构成一个字符串直到接收到响应数据中含有history,ok或history,error将所有追加狗长城的字符串传入数据解析函数中。 处理实现 因为要数据进行追加成一个字符串所以就需保存上一次的数据将下一次接收的数据追击哀悼上一次数据的后面直到最后接收到的数据中含history,ok或history,error。 QByteArray msgByteArray;//返回的数据是分开发送的逐条发送所以累计接收while (m_udp-hasPendingDatagrams()) {QByteArray byteArray;byteArray.resize(m_udp-pendingDatagramSize());QHostAddress ip;quint16 port;qint64 ret m_udp-readDatagram(byteArray.data(),m_udp-pendingDatagramSize(),ip,port);msgByteArray.append(byteArray);}QString strTemp msgByteArray;//临时保存接收的数据if (!strTemp.contains(ok)) {//是否接收数据中含有okif (strTemp.contains(error)) {//请求失败qDebug()QStringLiteral(接收的字节数)msgByteArray.size()QStringLiteral(数据)msgByteArray.data();m_interface-onReceviedData(msgByteArray);//将接收的一次完整的响应回调给数据处理函数}else {//只回应了一部分数据后面还有数据//保存此次接收的数据等到结束标志history,ok到来的时候与接收标志的数据叠加m_partByteArray msgByteArray;//保存每一次接收的数据并追加后面收到的数据}}else {if (!m_partByteArray.isEmpty()) {m_partByteArray.append(msgByteArray);msgByteArray.clear();msgByteArray m_partByteArray;//为了使发送的数据依旧是msgByteArray,同时满足当返回响应是失败m_partByteArray.clear();}//直到接收到一次完整的数据qDebug()QStringLiteral(接收的字节数)msgByteArray.size()QStringLiteral(数据)msgByteArray.data();m_interface-onReceviedData(msgByteArray);}上面这段代码的逻辑既能满足一次性接收完整的响应成功失败的响应也能满足一部分一部分的接收一次响应。 m_interface-onReceviedData(msgByteArray);是将接收到的一次完整的响应数据已回调的方式传递到数据处理函数中。 领悟 在qt下udp通信中数据接收的方式还是要根据自己项目的需求来做适当的修改并不是是常规接收数据那样一成不变的。
http://www.pierceye.com/news/268735/

相关文章:

  • 商品交换电子商务网站开发网站首页制作公司
  • wordpress全站备份建设网站和推广
  • 广州市官网网站建设哪家好上海营销型网站建设公司
  • 江山网站制作瑞安自适应网站建设
  • 生意网官方网站高端建设网站
  • 公司网站建设南宁腾讯企业邮箱登录入口手机版
  • 简历网站推荐做网站公司是干什么的
  • 网站备案率是什么会展相关app和网站的建设情况
  • 南京网站设计网站建设上海网站域名备案处
  • 做网站市场分析三视觉平面设计网
  • 网站建设中++模板企业网站部署计划
  • 房产部门成立网站wordpress站内搜索次数
  • 网站建设合同管辖地广州敏城建设工程有限公司网站
  • 班级网站主页设计模板购买网站域名空间
  • 做响应式网站最大宽度景观设计公司起名
  • 有小广告的网站适合40岁女人的培训班
  • html5网站建设有什么网站用名字做图片
  • 合肥珍岛公司做网站推广怎么样关键词排名优化如何
  • 做讲课ppt的网站郑州市建设局官方网站
  • 邢台集团网站建设报价免费推广网站有哪些
  • 龙华网站建设营销推广广东东莞区号
  • 徐汇网站开发培训企业建网站报价
  • 专业网站建设公司兴田德润信任高建设高端网站公司哪家好
  • 烟台网站建设优惠臻动传媒做网站怎么挣钱
  • 重庆网站建设mlfartwordpress4 中文
  • 永州建设企业网站阿里云 网站部署
  • 学校做网站难吗创新logo设计
  • 国内用python做的网站如何做网站讯息
  • 的网站开发工具有哪些免费制作永久企业网站
  • 网站举报查询一个网站开发的权限