解决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消息批评指正。
相关推荐
-
解决time_wait强制关闭socket
解决time_wait 今天我在测试代码的时候,边开边看电影,服务端的CPU消耗和内存使用让我挺满意的 可是过了一会,在统计达到了一定连接后,后来连接很多无法登陆.象上公交车,拥 挤不堪无法上车,用netstat -an查看了下连接状态,time_wait状态的端口非常多 原因就在此了,消耗完系统的端口数,服务端将就无法接收新连接,找到问题就来说明 time_wait,这个东西默认存活时间为2分钟,够长的,这点很要命,更多的大家百度下 对付这个问题,我写了一个函数,强制关闭socket,代码环境
-
如何在c语言下关闭socket
c语言关闭socket的两种方式 一.shutdown() #include<sys/socket.h> int shutdown(int sockfd,int how); how的方式有三种分别是 SHUT_RD(0):关闭sockfd上的读功能,此选项将不允许sockfd进行读操作.不允许接受. SHUT_WR(1):关闭sockfd的写功能,此选项将不允许sockfd进行写操作.不允许发送. SHUT_RDWR(2):关闭sockfd的读写功能.不允许发送和接受(和 close() 一样
-
Java通过关闭Socket终止线程
本文实例为大家分享了Java关闭Socket实现终止线程的具体代码,供大家参考,具体内容如下 package Threads; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; /** * Created by Frank */ public class StopClose extends Thread { pro
-
C#实现强制关闭当前程序进程
/// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> /// <param name="command"></param> /// <returns></returns> public static string RunCmd(string command) { //實例一個Process類,啟動一個獨立
-
快速解决pyqt5窗体关闭后子线程不同时退出的问题
用pyqt5设计了一个主窗体,在窗体运行时需要把一个无限循环放在一个线程去工作.运行后,发现通过鼠标按主窗体的关闭按键关闭主创体后,线程不会自动终止,依然在运行.尽管对我的使用场景来说,这不是问题,因为立马就关机了.但在调试阶段就恨繁,因为后台线程很占资源.怎么能让主窗体关闭是子线程也退出呢?百度了许久,很多方法都不行. 主要试过的有: 1.设置:self.thread.Daemon=True 2.在子线程设置一个变量,通过改变变量的值使循环不满足条件,自动结束 3.设置析构函数 还有别的奇葩.
-
浅谈python中真正关闭socket的方法
close方法可以释放一个连接的资源,但是不是立即释放,如果想立即释放,那么在close之前使用shutdown方法 shut_rd() -------关闭接受消息通道 shut_wr()--------关闭发送消息通道 shut_rdwr()-------连个通道都关闭 使用:在close()之前加上shutdown(num)即可 [shut_rd(), shut_wr(), shut_rdwr()分别代表num 为0 1 2 ] (但是测试过close()关闭,发现如果关闭后,那么ac
-
在python中实现强制关闭线程的示例
如下所示: import threading import time import inspect import ctypes def _async_raise(tid, exctype): """raises the exception, performs cleanup if needed""" tid = ctypes.c_long(tid) if not inspect.isclass(exctype): exctype = type(e
-
如何解决mysql无法关闭的问题
mysql关闭不了的解决办法: 右键点击电脑的任务栏,打开任务管理器 点击服务,找到mysql服务 右键点击该服务,选择停止就可以了 内容扩展: mac系统mysqld进程无法kill掉的问题 mac安装比linux恶心的太多,权限太受限制 kill -9根本无法杀死mysqld进程,查了好久原来是因为 LaunchDeamons定时任务守护mysqld进程 解决方法: sudo launchctl unload -w /Library/LaunchDaemons/com.oracle.oss.
-
VBS 强制关闭Symantec Endpoint Protection的代码
使用这个脚本,可以随时让它歇下来.当然也可以让它继续工作.前提是,你必须是本机管理员.这个脚本使用一各很过时的终止程序方法:ntsd.exe -c q -p ProcessID.所以以前有过一个bat版,之所以用VBS是因为效率高一点,而且没有太多的黑色窗口.主要思想是:循环终止程序+停止服务 代码如下: 复制代码 代码如下: 'On Error Resume Next' 检查操作系统版本Call CheckOS()Call MeEncoder() ' 程序初始化,取得参数If WScript.
-
解决python web项目意外关闭,但占用端口的问题
问题描述 因为项目强制关闭,但是服务还在运行,导致重新运行项目时候 提示地址已经使用(端口被占用) /usr/bin/python3.5 python-login-demo/index.py http://0.0.0.0:8080/ Traceback (most recent call last): File "/var/www/git/mine/python-login-demo/index.py", line 64, in <module> application.r
随机推荐
- JAVA线程用法详解
- 在Android系统中使用WebViewClient处理跳转URL的方法
- python&MongoDB爬取图书馆借阅记录
- javascript改变position值实现菜单滚动至顶部后固定
- 一步步做自己的webinstall安装包
- 在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍
- 某个aspx页面突然死了连日志也没有的解决方法
- 一个模仿oso的php论坛程序源码(之三)第1/2页
- 解决RHAS3中Apache2的PHP上传文件大小的限制
- php+mysql 实现身份验证代码
- Python中文编码那些事
- 用VBS来代替BAT或CMD文件进行命令第1/2页
- 微信小程序 获取javascript 里的数据
- Jquery on绑定的事件 触发多次实例代码
- javascript使用百度地图api和html5特性获取浏览器位置
- JS实现点击复选框将按钮或文本框变为灰色不可用的方法
- Android Socket通信详解
- 分析 JavaScript 中令人困惑的变量赋值
- PHP删除特定数组内容并且重建数组索引的方法.
- VC使用编译时间作为版本号标识的方法