Socket中莫名其妙的问题 MS的SOCKET使用的是异步,因此你说的有可能。你写的代码有隐患!!“程序在第一个信息分析是正确的,动作也正常,然后再接受的时候就出错了”这里是方面意思,你最好还是先讲清楚你的问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 算法出错,导致pData超界写入看来你是想收100字节到pData中对吧?这样改: DataSize=0; while(DataSize<100 && (ret=Receive(pBuf,100-DataSize))>0){ memcpy(pData+DataSize,pBuf,ret); DataSize+=ret; } 谢谢。两位所言极是。上面的代码是有问题,这是我把很多错误处理隐调了的结果。问题不在这里接受到的信息肯定不到100字节本来有内存重新分配realloc 问题是。他返回的出口不对阿 "问题是它从Analyzer(4)进去的可是执行完了之后,返回竟然返回到2,有时候断点跟踪也会返回到别的语句,就是不回到Anaylyzer的下一句。"程序是不是多线程的, 而在调试的时候又多个线程在动, 导致debug 在多个线程之间切换, 由上述的现象, 另外, 如果你的CConnetSocket是从CAsyncSocket 或 CSocket 派生的, OnReceive消息, 是在又数据进入win socket 接受缓冲的时候被触发的, 但这是要接受的数据量并不一定是100呀,你在一次OnReceive 中重复直到有100个byte 的数据量收到, 如果这100个bytes是分好几次被win socket接受的, 在头一次的OnReceive 中就被强行收完, 后面几次的OnReceive 调用岂不是又要等到下一个, 甚至是下几次的100 bytes 发来, 我认为在OnReceive 中就是把这次该收的收掉, 放到一个缓冲中去, 在出了OnReceive 后, 来分析缓冲中的数据, 不到需要量的在下次有数据来的时候在分析, 到需要量的根据实际工作 处理接受到的数据。 先将pbuf,pdata变为CConnetSocket的变量,然后跟踪它的值,就能知道是不是由于下一次的OnReceive引起的了 或者Analyzer不传指针,传值也行 求救各位大虾,如果从网络摄像头里捕获视频流? 以下哪些函数是线程安全的? 奇怪的问题,程序在别的机器上可以运行,我的机器上却出错 改变图像亮度图像颜色部分出现偏差问题 重新开贴求解:请问如何识别波形上的波峰?【图】 问一个简单问题 学MFC看哪本书比较好,介绍介绍(是光有VC的书) VC问题求教:怎样在EditBox中输出多行文本? 有以前搞过数学建模的ggjj吗,请帮帮我吧 请教: NT程序在2003系统下启动不了 如何由CRgn得到一组Polygon? 驻留RAM的程序如何编写?有什么特点?
看来你是想收100字节到pData中对吧?
这样改:
DataSize=0;
while(DataSize<100 && (ret=Receive(pBuf,100-DataSize))>0){
memcpy(pData+DataSize,pBuf,ret);
DataSize+=ret;
}
两位所言极是。
上面的代码是有问题,这是我把很多错误处理隐调了的结果。
问题不在这里
接受到的信息肯定不到100字节
本来有内存重新分配
realloc
问题是。
他返回的出口不对阿
可是执行完了之后,返回竟然返回到2,有时候断点跟踪也会返回到别的语句,就是不回到
Anaylyzer的下一句。"
程序是不是多线程的, 而在调试的时候又多个线程在动, 导致debug 在多个线程之间切换, 由上述的现象,
另外, 如果你的CConnetSocket是从CAsyncSocket 或 CSocket 派生的, OnReceive消息, 是在又数据进入win socket 接受缓冲的时候被触发的, 但这是要接受的数据量并不一定是100呀,你在一次OnReceive 中重复直到有100个byte 的数据量收到, 如果这100个bytes是分好几次被win socket接受的, 在头一次的OnReceive 中就被强行收完, 后面几次的OnReceive 调用岂不是又要等到下一个, 甚至是下几次的100 bytes 发来, 我认为在OnReceive 中就是把这次该收的收掉, 放到一个缓冲中去, 在出了OnReceive 后, 来分析缓冲中的数据, 不到需要量的在下次有数据来的时候在分析, 到需要量的根据实际工作 处理接受到的数据。