我真的是没办法了,,靠,,

elssann 2004-07-16 11:01:37
在大量客户连接后,大量的收发数据,
然后客户端断开,这时候很多在完成端口里正在PENDING的IO操作不返回。。

因为我的同一个连接可能同时有WSARecv或者WSASend都在完成端口里PENDING,涉及到引用计数,只有引用计数为0的时候才回收这个连接的资源。。。。如果采取超时检测来关闭也一样达不到这个目的,即使我认为这个SOCKET超时了,主动对这个SOCKET进行closesocket,但是在这之前调用成功后正在完成端口里PENDING的WSARecv或者WSASend还是不会返回。。。。这样引用计数没有机会减掉,还是无法回收这个连接的资源,,,真是郁闷死了。。。
今天采用CancelIo发现也没作用,,,因为CancelIo只能取消由本线程发出的IO操作,,
FUCK!!!



...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
danielzhu 2004-07-16
  • 打赏
  • 举报
回复
UP
elssann 2004-07-16
  • 打赏
  • 举报
回复
现在问题主要在这上面:

当我的一个WSARecv或者WSASend的调用返回WSA_IO_PENDING后,客户端断开,GetQueueCompletion不返回。。。。..

也不是所有的都不返回,在我客户端连接3000个左右,服务器的收发流量在160M BPS/S的情况下,如果把客户端关闭,会有几百个不返回。。。然后重复连接重复断开,就导致累计的越来越多。。。
kpld8888 2004-07-16
  • 打赏
  • 举报
回复
靠,阁下有这个爱好?
自由的风 2004-07-16
  • 打赏
  • 举报
回复
我对带“靠”的帖子非常喜欢,帮你UP

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧