def check_port(port):
import socket, errno
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind(("127.0.0.1", port))
except socket.error as e:
if e.errno == errno.EADDRINUSE:
print("Port is already in use", port)
else:
print(e)
print(f"****Port: {port} cannot be acessed****")
return False
s.close()
return True
# Check port open for range of ports
for i in range (10000):
check_port(i)
7条答案
按热度按时间ftf50wuq1#
要检查端口用途:
字符串
来源:https://codereview.stackexchange.com/questions/116450/find-available-ports-on-localhost
**注意:**connect_ex仍然可以引发异常(如果主机名不正确,请参见[1]上的文档)。
[1][https://docs.python.org/3/library/socket.html](https://docs.python.org/3/library/socket.html)的
vuktfyat2#
下面是如何检查端口是否被占用的示例。
字符串
t1rydlwq3#
如果只尝试绑定到您想要的端口,并在端口被占用时处理错误情况,怎么样?(如果问题是您可能会启动相同的服务两次,则不要查看打开的端口。
正如@eemz在另一个回答中所说,这也是避免造成竞争条件的合理方法。
yvgpqqbh4#
Simon B的回答是正确的--不要检查任何东西,只要尝试绑定并处理错误情况(如果它已经在使用中)。
否则,您将处于竞争状态,其他应用程序可以在您检查端口是否可用以及随后尝试绑定到它之间**获取端口。这意味着您仍然必须处理bind调用失败的可能性,因此提前检查没有任何效果。
rta7y2nd5#
您使用的是Linux?如果是这样的话,也许您的应用程序可以运行
netstat -lant
(如果您使用UDP,则为netstat -lanu
)并查看哪些端口正在使用。这样应该更快......jaxagkaj6#
检查端口是否正在使用的Python 2代码
字符串
检查here for python 3
rbpvctlc7#
检查可用/已用端口
字符串