如何在Python中选择一个空闲端口号?
可能重复的问题:
在本地,如何选择一个空闲的端口号?
我的需求和这个问题不一样。
我正在用Python写一个测试设置,这个设置需要给另一个进程传递一个端口号(比如作为命令行参数)。我不能随便写一个随机的端口号,因为通常会有很多用户在同一台机器上运行相同的测试。那么,我该如何在Python中选择一个空闲的端口呢?
编辑:
我并不是在Python中创建一个套接字。我只是需要把一个数字作为命令行参数传递给另一个进程。
根据DRH的回答,我可以创建一个虚拟的套接字,获取它的端口号,然后关闭它,再把这个端口号传给实际的进程。有没有更好的方法呢?
1 个回答
16
你问的这个问题,可能没有一个安全的解决办法。即使操作系统能给你一个当前空闲的端口,也不能保证在你请求这个端口和你实际使用它之间,其他程序不会抢先占用这个端口。
所以,如果你只是想找一个可能空闲的端口,可以试试绑定到端口 0
,具体方法可以参考这里 在本地如何选择一个空闲的端口号?。然后关闭这个连接(这样就释放了端口),再把这个值传给你的应用程序。