//群发,异常时不关闭socket,(关闭会出现异常(死锁?!),而不关闭最多客户端少收一些数据而已),再者,这里在关闭,而SocketArray_->GetActiveItem(i)又在获取。。。
//会发生类似这样的死锁:AcceptThread的RecvData要进入锁,但OnRecvComplete却阻塞在recv处,为什么会阻塞在这里?可能是CloseSocket是,破坏了某些数据,如重叠
//结构等socket需要的结构数据。后来发现是因为SocketArray_中的数据引起?!明天再看看。为了方便定位问题,先将RSThread改成单线程,经过一系列VS/windbg调试总结
//如下:
//1.****** 单线程,群发除自己以外的其它客户端,而后立刻关闭被发消息的客户端,发现阻塞在recv处,究其原因:关闭其socket之前一瞬间,此客户端发送一条消息,
//******** 此消息放入了服务器队IO列中,随后此客户端其重叠资源和ActiveItem也释放,若此时正好有一客户端连接进来,被分配和刚才被释放socket同样的句柄,并且
//
//会发生类似这样的死锁:AcceptThread的RecvData要进入锁,但OnRecvComplete却阻塞在recv处,为什么会阻塞在这里?可能是CloseSocket是,破坏了某些数据,如重叠
//结构等socket需要的结构数据。后来发现是因为SocketArray_中的数据引起?!明天再看看。为了方便定位问题,先将RSThread改成单线程,经过一系列VS/windbg调试总结
//如下:
//1.****** 单线程,群发除自己以外的其它客户端,而后立刻关闭被发消息的客户端,发现阻塞在recv处,究其原因:关闭其socket之前一瞬间,此客户端发送一条消息,
//******** 此消息放入了服务器队IO列中,随后此客户端其重叠资源和ActiveItem也释放,若此时正好有一客户端连接进来,被分配和刚才被释放socket同样的句柄,并且
//