网络编程-使用IOCP同时发送数据与接收数据时,出现bug,求解释,先谢谢啦!

作者:用户 来源:互联网 浏览:339 次 时间:2016-08-26 09:16:05

网络编程iocpc++

网络编程-使用IOCP同时发送数据与接收数据时,出现bug,求解释,先谢谢啦! - 摘要: 使用IOCP同时发送数据与接收数据时,出现bug,求解释,先谢谢啦!描述:我用IOCP做了个客户端,发送数据给服务端完全没问题,就是当服务端返回我发送的数据(服务端不做任何处理),我的客户端接收就出现

问题描述

使用IOCP同时发送数据与接收数据时,出现bug,求解释,先谢谢啦!

描述:我用IOCP做了个客户端,发送数据给服务端完全没问题,就是当服务端返回我发送的数据(服务端不做任何处理),我的客户端接收就出现了bug,经常就是接收到几十到几百个完整包(客户端拼包自己搞定了)就崩溃了,我是从客户端向服务端连续发送1000个512KB的数据。后来我加了一句代码问题基本没出现过,就是加了个Sleep(1),谁能解释下是为什么吗?很急,这个问题困扰几天了。(个人猜想是pBuffer指针可能被覆盖了的原因)
Sleep(1);
pBuffer = CONTAINING_RECORD(pOverlapped CIOCPBuffer ol);

解决方案

你发送和接收的的非分页的buffer你确定没有被释放吗?

解决方案二:

我改为一个工作线程就不会出现程序崩溃的问题,但是会出现发送到几百个包后停止的问题,服务端和客户端都没有崩溃,请问这是什么问题?
我就一个线程执行,应该不会出现死锁的情况。

解决方案三:

还有没有大侠来帮助下小弟,现在在读数据操作中(OP_READ)设置Sleep(1)就很好,但是显然这是不靠谱的行为,我感觉是我解析包的代码问题,但是解析的数据都是对的,也许是解析的太慢了??

【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击
双十二
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航