fly_sky010
fly_sky010
采纳率0%
2015-05-12 10:53

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • fly_sky010 fly_sky010 6年前

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

    点赞 评论 复制链接分享
  • fly_sky010 fly_sky010 6年前

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

    点赞 评论 复制链接分享
  • VisualEleven Eleven 6年前

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

    点赞 评论 复制链接分享

相关推荐