关于 self.web_server.bind(("", port)) OSError: [Errno 98] Address already in use

本文详细解析了在启动网络服务时遇到的端口被占用错误,包括错误原因及解决策略,如检查端口使用情况、更换端口或利用socket选项避免问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Traceback (most recent call last):
File “/home/python/Desktop/test/web服务器线程版.py”, line 86, in
main()
File “/home/python/Desktop/test/web服务器线程版.py”, line 80, in main
web_server = WebServer(port)
File “/home/python/Desktop/test/web服务器线程版.py”, line 30, in init
self.web_server.bind(("", port))
OSError: [Errno 98] Address already in use

关于这个错误提示是地址已经被占用
有如下几种情况:

1、端口真正的被其他应用程序占用
这时你需要去查看端口是否被其他应用程序占用,如果占用可以关掉程序或者我们换一个端口即可

2、如果之前你已经正常运行改程序了,之后点击关闭程序在点击开始时报这个错(或者重新运行服务程序),这时因为tcp本身为了数据传输安全考虑产生的问题,一般关掉服务端程序后,所占用的端口要继续占用1-3分钟的样子,所以如果重启的服务的话会报地址已经被占用。
这时可以在绑定端口之前加上下面的语句(web_server是服务器套接字)
web_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

*****注意

上面的语句要加到绑定端口之前如下

    self.web_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    self.web_server.bind(("", port))

如果加到绑定端口下面是不起作用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值