描述:我用IOCP做了个客户端,发送数据给服务端完全没问题,就是当服务端返回我发送的数据(服务端不做任何处理),我的客户端接收就出现了bug,经常就是接收到几十到几百个完整包(客户端拼包自己搞定了)就崩溃了,我是从客户端向服务端连续发送1000个512KB的数据。后来我加了一句代码问题基本没出现过,就是加了个Sleep(1),谁能解释下是为什么吗?很急,这个问题困扰几天了。(个人猜想是pBuffer指针可能被覆盖了的原因)
Sleep(1);
pBuffer = CONTAINING_RECORD(pOverlapped, CIOCPBuffer, ol);
你发送和接收的的非分页的buffer你确定没有被释放吗?
我改为一个工作线程就不会出现程序崩溃的问题,但是会出现发送到几百个包后停止的问题,服务端和客户端都没有崩溃,请问这是什么问题?
我就一个线程执行,应该不会出现死锁的情况。
还有没有大侠来帮助下小弟,现在在读数据操作中(OP_READ)设置Sleep(1)就很好,但是显然这是不靠谱的行为,我感觉是我解析包的代码问题,但是解析的数据都是对的,也许是解析的太慢了??