| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 462 人关注过本帖
标题:CAsyncSicket::Receive()
只看楼主 收藏
鸿蒙之灵
Rank: 4
来 自:异次元裂缝
等 级:贵宾
威 望:10
帖 子:63
专家分:240
注 册:2016-8-22
结帖率:100%
  问题点数:0  回复次数:1   
CAsyncSicket::Receive()
在调用系统函数CAsyncSocket::Receive()时的问题:


即调用该函数,返回值是一个int,据我了解,该返回值是从缓存中所读取的byte数组(我的操作对象)的长度,但是实际中,我所得到的返回值和理论值差距很大。

具体需要实现的功能为:利用网口接收一包1075个字节的数据包,由于数据包比较大,所以分几次读取,每次读取后,进行拼帧操作,每次拼帧后,判断帧头帧尾,判断正确后按照一包数据进行解析,如果不正确,则根据拼帧完成后的字节长度进行抛帧,继续新的读取操作。

目前由于在调用     pSock->Receive()    函数对读取的数据长度进行获取时,返回值经断点监视调试,非常诡异。


由于涉及商业机密,代码不方便贴出来,只进行了口头的描述,各位老铁帮帮忙,提供一下思路,我这边继续调试。不甚感谢!!!!!!

在线苦等!!!!!
2017-08-15 14:39
鸿蒙之灵
Rank: 4
来 自:异次元裂缝
等 级:贵宾
威 望:10
帖 子:63
专家分:240
注 册:2016-8-22
  得分:0 
解决了,原因是发送端网口问题,网口发送过程中,因故障一次没有发送完,故分了几次发送,分批次发送时数据就有错乱和错码掺杂,系统函数返回的数据长度是正确的,通过查看内存可以判断,换了一台工控机,发送接收都正常了

对待编程,要像对待情人一样
2017-08-17 09:57







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.082080 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved