【发布时间】:2012-01-25 20:45:26
【问题描述】:
我的要求与这个问题不同。
On localhost, how to pick a free port number?
我正在使用 python 编写另一个进程的测试设置。另一个进程需要传递一个端口号(比如作为命令行参数)。我不能硬编码一些随机端口号,因为许多用户通常会在同一个盒子中运行相同的测试。现在,如何在 python 中选择一个空闲端口?
编辑:
我没有在 python 中创建套接字。我只需要将一个数字作为命令行参数传递给其他进程。
根据 DRH 的回答, 我可以创建一个虚拟套接字,获取它的端口号,关闭它并传递给实际进程。有没有更好的方法来做到这一点?
【问题讨论】:
-
您的要求有何不同?
-
我没有在 python 中创建套接字。那么如何要求操作系统提供免费端口呢?我只需要将这个数字作为命令行参数传递给其他进程。
-
我不确定是否要向操作系统询问可用端口号。如果您多次询问而不打开套接字怎么办?是否保证每次请求都会获得不同的端口号?
-
在我询问一次并在该端口上运行我的进程之后。它不再是免费的。那么我不会为不同的进程获得不同的端口吗?
-
@balki - 即使操作系统现在告诉你一个空闲端口,也不能保证它会在 100 毫秒后空闲。至少使用“获取端口”方法,在该端口下一次绑定到服务器套接字之前应该有一个超时。
标签: python