如何在Python中选择一个空闲端口号?

15 投票
1 回答
13056 浏览
提问于 2025-04-17 08:49

可能重复的问题:
在本地,如何选择一个空闲的端口号?

我的需求和这个问题不一样。

在本地,如何选择一个空闲的端口号?

我正在用Python写一个测试设置,这个设置需要给另一个进程传递一个端口号(比如作为命令行参数)。我不能随便写一个随机的端口号,因为通常会有很多用户在同一台机器上运行相同的测试。那么,我该如何在Python中选择一个空闲的端口呢?

编辑:

我并不是在Python中创建一个套接字。我只是需要把一个数字作为命令行参数传递给另一个进程。

根据DRH的回答,我可以创建一个虚拟的套接字,获取它的端口号,然后关闭它,再把这个端口号传给实际的进程。有没有更好的方法呢?

1 个回答

16

你问的这个问题,可能没有一个安全的解决办法。即使操作系统能给你一个当前空闲的端口,也不能保证在你请求这个端口和你实际使用它之间,其他程序不会抢先占用这个端口。

所以,如果你只是想找一个可能空闲的端口,可以试试绑定到端口 0,具体方法可以参考这里 在本地如何选择一个空闲的端口号?。然后关闭这个连接(这样就释放了端口),再把这个值传给你的应用程序。

撰写回答