Mac OS: 端口未被占用时套接字绑定失败
Mac OS: socket bind failed while port is not occupied
背景是:我有一个开发中的SpringBoot项目,监听55555端口,之前在我的MacOS上项目运行正常。但是最近它无法启动,因为它无法绑定到给定的地址。而像 55556 这样的另一个端口就可以了。
我试图用一个简单的 python 脚本绑定到它,但它也不起作用:
>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # this won't help
>>> s.bind(('0.0.0.0',55555))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 48] Address already in use
>>>
众所周知,众所周知的解决方法是找出哪个进程正在占用端口并杀死它。但是,我找不到占用此端口的任何进程。我使用了 lsof
和 netstat
。这是我输入的内容及其响应(完全没有):
cosmo:~$ sudo netstat -an -p tcp | grep 55555
cosmo:~$ sudo lsof -i:55555
cosmo:~$
此外,尝试连接到该端口失败:
cosmo:~$ telnet localhost 55555
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
cosmo:~$
最后我重启了电脑,也没用
知道这个问题是如何发生的以及如何处理吗?非常感谢!
显然,您不能在 Mac 上使用端口 55555。目前尚不清楚这是一个错误还是故意行为,但它被广泛报道并有各种解释,none 官方。解决方案是使用其他端口。
我能找到的最接近官方声明的是 Apple 支持部门的某个人,他说该端口“被系统用于 TCP”并且“......修复它会更具挑战性”。
背景是:我有一个开发中的SpringBoot项目,监听55555端口,之前在我的MacOS上项目运行正常。但是最近它无法启动,因为它无法绑定到给定的地址。而像 55556 这样的另一个端口就可以了。
我试图用一个简单的 python 脚本绑定到它,但它也不起作用:
>>> import socket
>>> s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # this won't help
>>> s.bind(('0.0.0.0',55555))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 48] Address already in use
>>>
众所周知,众所周知的解决方法是找出哪个进程正在占用端口并杀死它。但是,我找不到占用此端口的任何进程。我使用了 lsof
和 netstat
。这是我输入的内容及其响应(完全没有):
cosmo:~$ sudo netstat -an -p tcp | grep 55555
cosmo:~$ sudo lsof -i:55555
cosmo:~$
此外,尝试连接到该端口失败:
cosmo:~$ telnet localhost 55555
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
cosmo:~$
最后我重启了电脑,也没用
知道这个问题是如何发生的以及如何处理吗?非常感谢!
显然,您不能在 Mac 上使用端口 55555。目前尚不清楚这是一个错误还是故意行为,但它被广泛报道并有各种解释,none 官方。解决方案是使用其他端口。
我能找到的最接近官方声明的是 Apple 支持部门的某个人,他说该端口“被系统用于 TCP”并且“......修复它会更具挑战性”。