python进程结束后端口被占用怎么解决
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容主要讲解"python进程结束后端口被占用怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python进程结束后端口被占用怎么解决"吧!so
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
山西数据软件开发要求
毛晶玥网络安全教学视频
香肠派对服务器无法连接怎么办
商用数据库应用系统
主流的软件开发模式
网络安全手抄报带文字
管理服务器卡顿
mysql数据库基础维护
sql怎么删除数据库和表
服务器主城附魔台管理员指令
木瓜奇迹连接服务器失败
系统通过页面操作数据库
ACcess做局域网数据库
嘉兴通信网络技术常见问题
杭州施工管理软件开发
如何保护数据库服务器
网络安全波动性
浪潮服务器打开网口
数据库实验结果分析及问题讨论
深圳恒合互联网络科技有限公司
db2数据库视频百度云
软件开发纠纷官司
传奇服务器分类
沈阳三洋电梯服务器说明
计算机网络技术期末考试卷
网络安全 两个事关
软件开发目标客户描述
如何更改数据库的文件名
网络安全机构设置自查报告
网信企业的网络安全责任