python起端口脚本时 scocket.error address already in use 但我确定该端口上没有运行程序
时间: 2024-03-01 19:49:47 浏览: 190
如果你确定该端口上没有运行程序,那么可能是因为之前的程序没有正确关闭该端口导致的。你可以尝试让操作系统在端口上设置 SO_REUSEADDR 选项,以便在程序关闭后立即释放该端口。你可以在代码中使用以下语句来设置 SO_REUSEADDR 选项:
```python
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
```
其中,s 是你的 socket 对象。这将在 socket 上设置 SO_REUSEADDR 选项,以便在程序关闭后立即释放该端口。你可以尝试在绑定端口之前使用该语句,并检查是否仍然出现 "address already in use" 错误。例如:
```python
import socket
HOST = '127.0.0.1'
PORT = 8888
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 设置 SO_REUSEADDR 选项
s.bind((HOST, PORT))
s.listen()
print(f'Server started on port {PORT}')
while True:
conn, addr = s.accept()
with conn:
print(f'Connected by {addr}')
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
```
如果你仍然遇到问题,你可以尝试在程序中使用其他端口来绑定。
阅读全文