Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中定位未使用的端口而不绑定它们_Python_Sockets_Tcp_Ports - Fatal编程技术网

在python中定位未使用的端口而不绑定它们

在python中定位未使用的端口而不绑定它们,python,sockets,tcp,ports,Python,Sockets,Tcp,Ports,首先,我知道可以使用端口为0的套接字构造函数来查找未使用的端口,但这不是我的问题 我使用一个python脚本作为两个应用程序之间的中间代码,我希望python脚本为两个应用程序找到一个空闲端口,以便它们可以通信,我还没有找到一种在python中找到未使用的端口而不将其绑定到套接字的优雅方法,是否可以不绑定?还是我被迫这么做 这是一个这样做的代码,通过绑定端口并尽快关闭它,但我仍然觉得这不是一个好的实践 import socket s = socket.socket() s.bind(('loca

首先,我知道可以使用端口为0的套接字构造函数来查找未使用的端口,但这不是我的问题

我使用一个python脚本作为两个应用程序之间的中间代码,我希望python脚本为两个应用程序找到一个空闲端口,以便它们可以通信,我还没有找到一种在python中找到未使用的端口而不将其绑定到套接字的优雅方法,是否可以不绑定?还是我被迫这么做

这是一个这样做的代码,通过绑定端口并尽快关闭它,但我仍然觉得这不是一个好的实践

import socket
s = socket.socket()
s.bind(('localhost',0))
addr,port = s.getsockname()
s.close()
print(addr)
print(port)
应用程序之间的连接将是临时的,可能会出现许多实例


我正在寻找这样做的良好实践的指针,我想知道我所做的是正确的还是走错了方向

为什么不绑定并声明未使用的端口?如果不这样做,则可能会导致另一个程序使用已找到但尚未绑定的端口。如果同时运行程序的多个副本,则这不是理论上的风险。他们可能会相互干扰。这是我担心的一个风险,我实际上是将未使用的端口传递给虚拟机,以便它可以使用我服务器上的端口,所以我尝试使用python为itI分配端口,我不确定我是否遵循。虚拟机的端口与主机的端口是分开的,不是吗?很快,我尝试给它一个出口端口,以实际与外部应用程序接口,就像我将一个端口从我的服务器映射到它的某个端口,从而将它公开给外部应用程序一样为什么你的
外部应用程序
不能为你选择一个端口?为什么不绑定并声明未使用的端口?如果不这样做,则可能会导致另一个程序使用已找到但尚未绑定的端口。如果同时运行程序的多个副本,则这不是理论上的风险。他们可能会相互干扰。这是我担心的一个风险,我实际上是将未使用的端口传递给虚拟机,以便它可以使用我服务器上的端口,所以我尝试使用python为itI分配端口,我不确定我是否遵循。虚拟机的端口与主机的端口是分开的,不是吗?很快,我尝试给它一个出口端口,以便与外部应用程序进行实际接口,就像我通过将服务器的端口映射到服务器中的某个端口而将其暴露给外部应用程序一样。为什么你的
外部应用程序
不能为你选择一个端口?