我的要求与此问题不同。
On localhost, how to pick a free port number?
我正在使用python编写另一个进程的测试设置。另一个进程需要传递一个端口号(比如命令行参数)。我无法硬编码一些随机端口号,因为许多用户通常会在同一个盒子中运行相同的测试。现在,如何在python中选择一个自由端口?
编辑:
我没有在python中创建套接字。我只需要将一个数字作为命令行参数传递给其他进程。
从DRH的答案来看, 我可以创建一个虚拟套接字,获取其端口号,关闭它并传递给实际进程。有没有更好的方法呢?
答案 0 :(得分:13)
可能没有一种安全的方法来做你所要求的。即使操作系统可以向您返回当前空闲的端口,也无法保证在您请求端口的时间与您调用的应用程序尝试绑定到该端口之间,另一个进程不会将套接字绑定到该端口。
鉴于此,如果您只是寻找可能免费的端口,您可以按照On localhost, how to pick a free port number?所述绑定到端口0
,关闭生成的套接字(释放端口),以及然后将该值传递给您的应用程序。