如何解决pythonsocketserver重启后端口被占用的问题

author author     2023-05-13     369

关键词:

本文介绍下,在solaris 系统下,python socket server重启后,提示端口被占用,telnet端口失败。这里给出一个解决方法,有需要的朋友参考下。

在solaris 系统下,socket server被重启后,提示端口被占用,telnet端口又是不成功的,说明服务已被关闭。
通过netstat可以看到端口还处于于fin_wait_2状态,solaris要4分钟才能关闭。
遇到这个问题时,可以采用如下的方法解决,以减少等待时间。
1,加上s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)。
代码:

复制代码代码示例:
self.host=socket.gethostbyname(socket.gethostname())
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((self.host,self.port))
s.listen(5)
2,修改系统fin_wait,time_wait的时间设置。这个时间改短,也利于系统系能。
修改方法
查看或设置:
使用get命令来确定当前时间间隔,并使用set命令将时间间隔指定为30秒。
例如:

复制代码代码示例:
ndd -get /dev/tcp tcp_time_wait_interval
ndd -set /dev/tcp tcp_time_wait_interval 30000
缺省值:对于 Solaris 操作系统,缺省等待时间间隔为 240000 毫秒(即 4 分钟)。
建议值:60000 毫秒。
Solaris TCP_FIN_WAIT_2_FLUSH_INTERVAL
描述:
指定禁止处于FIN_WAIT_2状态的连接保持该状态的计时器时间间隔。
当连接比率较高时,这将累积大量的TCP/IP连接,从而导致服务器性能下降。在高峰时间段,服务器会发 生延迟。
如果服务器延迟,netstat命令显示对HTTP Server打开的许多套接字处于CLOSE_WAIT或FIN_WAIT_2状态。
明显的延迟可能会长达4分钟,其间服务器无法发送任何响应,但是CPU利用率保持很高,所有活动都在系统进程中。
查看和设置:
使用get命令来确定当前时间间隔,并使用set命令将时间间隔指定为67.5秒。
例如:

复制代码代码示例:
ndd -get /dev/tcp tcp_fin_wait_2_flush_interval
ndd -set /dev/tcp tcp_fin_wait_2_flush_interval 67500
缺省值:675000 毫秒
建议值:67500 毫秒
Solaris TCP_KEEPALIVE_INTERVAL
描述:
“保持活动”包确保连接保持活动和已建立状态。
查看或设置:
使用ndd命令来确定当前值或设置该值。
例如:

复制代码代码示例:
ndd -set /dev/tcp tcp_keepalive_interval 300000
缺省值:7200000 毫秒
建议值:15000 毫秒
参考技术A

可以使用socketserver模块

import socketserver
class MyServer(socketserver.BaseRequestHandler):
    def handle(self):
        """
        self.request=======conn
        :return:
        """
        while 1:
            try:
                data = self.request.recv(1024).decode("utf8")  # 阻塞函数
                print("data", data)
                # 针对linux,ios系统
                if len(data) == 0 or data == "q":
                    break
                res = input("回复>>>").encode("utf8")
                self.request.sendall(res)
            # 针对window系统
            except Exception as e:
                break
        self.request.close()

server=socketserver.ThreadingTCPServer(("127.0.0.1",8008),MyServer)
server.serve_forever()

树莓派装机后重启可能出现黑屏如何解决?

参考技术A黑屏是因为默认情况下树莓派没有显示配置文件,可以手动创建config.txt放在树莓派sd卡内,根据Linux的LCD显示设置,可以对显示器进行配置,一般2K显示器4:3像素为1920px*1440px配置group=2,model=73,60hz 查看详情

如何解决机器重启后mysql服务跑不起来了1067,附解决过程

今个别人的mysql跑不起来了,之前还好好的,问我怎么恢复,我没在她出问题的机器上弄,在自己机器上试的,最终解决了,现记录于此。1,首先把她的mysql安装文件夹、数据结构文件、数据文件全都复制过来(总之按照原来的m... 查看详情

如何解决win10系统的电脑一开机就提示“你的电脑将在一分钟后重启”并无限循环

遇到好多次这个问题了,但是我给他们的通用解决方法是重!置!系!统!,然而谁也不想总重置,毕竟软件还都得重装,于是乎今天我中招了!那么怎么解决呢?其实很简单。一、进入安全模式1、按住shift键后点击重启并一直... 查看详情

虚拟机安装deepin系统后,重启出现这个界面,怎么解决?

...安装完成,重启移除介质即可,然而显示这个界面,请问如何解决。CD已去掉开机启动项已更改如果系统已经安装完毕,需要将虚拟电脑中的虚拟硬盘设置为第一启动设备,再重启。追问Boot的设置已更改,第三张照片是截图,这... 查看详情

u盘装系统后启动不了是什么原因如何解决

U盘装系统后启动不了是什么原因如何解决用U盘启动盘制作工具,在PE安装完系统重启时,就把U盘拔了,结果就出现了operatingsystemnotfound这个提示,下面为大家介绍下具体的原因,有类似情况的朋友不要错过;或者就是显示启动... 查看详情

设备完成重启过程后如何启动我的应用程序?

】设备完成重启过程后如何启动我的应用程序?【英文标题】:Howtostartmyapplicationafterdevicecompletingrebootprocess?【发布时间】:2021-06-0118:00:29【问题描述】:我创建了一个应用程序,我想在设备重启后打开它我正在使用广播接收器... 查看详情

loadingerror如何解决安卓?

参考技术A出现这句话,是因为程序没有反应,你可以把这个程序重启一遍。如果重启后还没有好,你就该考虑考虑是不是网络的问题,如果这两者都是好的,你也可以去咨询游戏的运营商。 查看详情

cdlinux系统重启后所保存的文件都消失了,怎么回事,如何解决?

  可能是保存的位置不对  要把那个文件保存在其他地方,tmp里面的是临时文件。  要记住上次的最后一个pin就好,下次开机的时候先打开水滴跑一下,然后关闭,在去TEM文件夹里找到WPC文件之后进去改一下第一行数字就... 查看详情

滚动条自动上下滚,如何解决?

进入页面滚动条自动上下滚动。朋友,这是你的电脑“丢失”或“误删”了“系统文件”,或“系统文件”被病毒和“顽固”木马“破坏”,我给你7种方法:(答案原创,严禁复制)1.下载个:“360系统急救箱”或“金山急救箱... 查看详情

重启系统后iptables规则不生效,请求帮助解决

参考技术A不需要的,通过iptables命令添加的重启network服务后就丢失,如果想重启后不丢失,需要将命令添加入/etc/rc.local里面,开机自动执行。如果是redhat等可以添加入/etc/sysconfig/iptables里面 查看详情

unityugui修改好了recttransform的值但是重启工程后recttransform会自己变化,如何解决呢

最近Unity做了一个工程,用了很多Ugui的panel、button之类的,但是有一部分panel和button发生了一个比较奇怪的事情:将RectTransform中的Offset的几个值都设成0,当次启用都没关系,但是保存,关掉工程再重新打开,offset全都变了,怎么... 查看详情

如何解决libfbxsdk.dll丢失

下载个:“360系统急救箱”(1)先“查杀”病毒,再删除后,“立即重启”!(2)重启开机后,再点开“隔离|恢复”,点:“彻底删除”病毒文件和“可疑自启动项”!(3)再点开“修复”,“全选”,再“修复”文件!(4)... 查看详情

intellijidea蓝屏重启后,代码异常加载,到处报错解决方法

参考技术A方法很简单执行idea工具栏上下面的菜单:应该是蓝屏后将idea之前验证的缓存信息给破坏了,重启后无法正常读取,所以重置下缓存就可解决该问题。 查看详情

如何解决vmware下centos7网络重启出错

参考技术A流程如下:1)点击VM->SettingsHardware选项卡下面2)点击NetworkAdapter设置如下图所示,首先我们在虚拟机中将网络配置设置成NAT,3、进入Windows操作系统,然后右键点击我们的电脑,进入到管理界面 计算机->管理->... 查看详情

myeclipse中的java工程报错,表示找不到class文件,clean工程后编译的class文件全部消失了。如何解决。

...找不到class文件,clean工程后编译的class文件全部消失了。如何解决。选中项目,右键properties,选择javabuildpath,将library下的JRESystemLibrary删除,然后再引用一下,重新编译应该就好了。用了一个老版本的eclipse切换到新版本经常出... 查看详情

windows重启后浏览器无法上网的解决办法

...问均提示“dns_probe_possible”尝试多种办法均没成功,现已解决,将方法分享给大家:1.右键左下角开始图标,点击命令提示符(管理员运行)。2.在弹出的对话框中输入“netshwinsockreset”命令,之后按回车键确认。3.重启电脑。ok... 查看详情

重启系统后iptables规则不生效,请求帮助解决

(1)方法一:#serviceiptablessave(2)方法二:#iptables-save>/etc/sysconfig/iptables参考技术A你的规则有没有保存? 查看详情

系统装完重启后一直显示recoveringorphanedfilewindow,显示了25000多了,哪位大神知道该如何解决的?

...他盘的。追问他现在还在一个劲的动,我不知道我现在该如何操作,还有,现在翻滚的这些是不是就是在格式化D盘啊?追答现在的作用是将你备份的文件从D盘复制到C盘,你设置备份文件的时候应该存到了D盘。用系统安装盘,... 查看详情