源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

解决time_wait强制关闭socket

  • 时间:2021-03-08 22:38 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:解决time_wait强制关闭socket
解决time_wait 今天我在测试代码的时候,边开边看电影,服务端的CPU消耗和内存使用让我挺满意的 可是过了一会,在统计达到了一定连接后,后来连接很多无法登陆。象上公交车,拥 挤不堪无法上车,用netstat -an查看了下连接状态,time_wait状态的端口非常多 原因就在此了,消耗完系统的端口数,服务端将就无法接收新连接,找到问题就来说明 time_wait,这个东西默认存活时间为2分钟,够长的,这点很要命,更多的大家百度下 对付这个问题,我写了一个函数,强制关闭socket,代码环境{delphi7+windows xp} PS:只会点pascal,其他不熟。 function ForceCloseSocket(DestSock:TSocket):Boolean; var   NoWait:Boolean;   NLinger:Tlinger; begin   Result:=False;   NoWait:=False;   if SetSockOpt(DestSock,SOL_SOCKET,SO_DONTLINGER,@NoWait,sizeOf(Boolean))=SOCKET_ERROR then     Result:=False;   NLinger.l_onoff:=1;   NLinger.l_linger:=0;     if SetSockOpt(DestSock,SOL_SOCKET,SO_LINGER,@NLinger,sizeOf(NLinger))=SOCKET_ERROR then     Result:=False else Result:=True;   if CloseSocket(DestSock)=SOCKET_ERROR then Result:=Flase else Result:=True; end; Dz编辑器真是头大,麻烦,这个是强制关闭函数,一点心得,与大家分享下,欢迎PM消息批评指正。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部