我有一个python服务器,可以监听几个套接字.在启动时,我尝试在侦听之前连接到这些套接字,因此我可以确定没有其他任何东西已经在使用该端口.这增加了我的服务器启动大约三秒钟(没有测试大约.54秒),我想减少它.由于我只测试localhost,我认为大约50毫秒的超时时间就足够了.不幸的是,socket.setdefaulttimeout(50)方法由于某种原因似乎不起作用.
我怎么能减少它?
Rug*_*nar 17
这是一个检查功能正在使用的端口
def is_port_in_use(port):
import socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
return s.connect_ex(('localhost', port)) == 0
Run Code Online (Sandbox Code Playgroud)
来源:https://codereview.stackexchange.com/questions/116450/find-available-ports-on-localhost
Sti*_* OK 13
以下是如何检查端口是否被占用的示例.
import socket, errno
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind(("127.0.0.1", 5555))
except socket.error as e:
if e.errno == errno.EADDRINUSE:
print("Port is already in use")
else:
# something else raised the socket.error exception
print(e)
s.close()
Run Code Online (Sandbox Code Playgroud)
如何尝试绑定到您想要的端口,并处理错误情况如果端口被占用?(如果问题是您可能会启动相同的服务两次,那么请不要查看开放端口.)