python进程结束后端口被占用怎么解决
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本篇内容主要讲解"python进程结束后端口被占用怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python进程结束后端口被占用怎么解决"吧!so
千家信息网最后更新 2025年01月22日python进程结束后端口被占用怎么解决
本篇内容主要讲解"python进程结束后端口被占用怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python进程结束后端口被占用怎么解决"吧!
socket分配
一个服务端进程向操作系统申请一个 scoket
来监听,但是当进程退出后,还未关闭的连接不会立即消失,而是会留给操作系统处理。操作系统会尝试关闭这个连接。但是如果关闭时出现问题,这个连接就会一直处于 TIME_WAIT
或其他非正常状态,而这是相应的端口还处于占用状态,如果这个时候再重新启动这个服务端程序,就会出现地址被占用的情况
例子
测试代码:
import sockets = socket.socket()s.bind(('0.0.0.0', 12345))s.listen()(client, addr) = s.accept()print(client)print(addr)
使用 nc
进行连接:
nc 127.0.0.1 12345
服务端会打印 client
和 addr
,然后正常退出,但是此时使用 netstat -anop | grep 12345
查看,发现对应连接并没有被立即释放
tcp 0 0 127.0.0.1:12345 127.0.0.1:59408 TIME_WAIT - timewait (28.18/0/0)
此时再次启动服务端,发现报错了:
Traceback (most recent call last): File "server.py", line 5, ins.bind(('0.0.0.0', 12345))OSError: [Errno 98] Address already in use
解决方案
使用 setsockopt
:
import sockets = socket.socket()s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('0.0.0.0', 12345))s.listen()(client, addr) = s.accept()print(client)print(addr)
此时就不会出现地址被占用的提示了
在 c
中也有一样的方法,只是方法声明不同, c
版的用法为
struct sockaddr_in addr;addr.sin_family = AF_INET;addr.sin_port = htons(12345);addr.sin_addr.s_addr = htonl(INADDR_ANY);int s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);int reuse = 1;setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse));bind(s, (struct sockaddr *) &addr, sizeof(addr))listen(s, )struct sockaddr_in in_addr;int len = sizeof(in_addr);int client = accept(socket, (struct sockaddr *) in_addr, &len);//handle client//...
其他
发现除了
SO_REUSEADDR
之外还有一个SO_REUSEPORT
的选项,查询后得知是BSD
独有的,Linux
并不能用如果是客户端绑定端口用这个属性可能会出现刚连接上服务器就莫名其妙收到一个
FIN
的问题,导致其立即关闭,因此客户端使用此选项时需注意
到此,相信大家对"python进程结束后端口被占用怎么解决"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
端口
进程
服务
操作系统
方法
系统
内容
地址
客户
客户端
状态
问题
学习
查询
不同
实用
更深
莫名其妙
代码
例子
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
阜新供热站自动化控制软件开发
高性能计算服务器报价
我的世界服务器汉化
相城区正规软件开发专业服务
什么是网络技术开发优缺点
软件开发有哪些编程软件
分公司之间的网络安全设计
延庆区电子计算机软件开发要求
惠州通讯软件开发商家
软件开发应用最广泛的模型
c 智能匹配数据库检索
千里及网络技术有限公司
做网络安全销售行业挣钱吗
查看数据库表的大小
网络安全一级违规罚款
oracle数据库岗位有
软件开发用服务器cpu
信息网络安全等保
怎样合并两个相同的数据库
hp服务器第二个灯
数据库查询并返回时间
黄山市文旅局网络安全培训
网络技术江西大专院校
文件已在协同服务器
内部虚拟冗余网络技术
深圳智慧门禁软件开发怎么样
在服务器上能查到吗
macos搭建mc服务器
传统关系型数据库已被淘汰
徐州市网络安全知识竞赛入口