C++ 使用boost::asio是否有一种可移植的方法来查找空闲端口号

C++ 使用boost::asio是否有一种可移植的方法来查找空闲端口号,c++,sockets,boost,tcp,port,C++,Sockets,Boost,Tcp,Port,我目前正试图找到一种方法来找到一个空闲端口的数量来建立连接,最好是使用boost::asio。这个端口号将被用来监听(只有这样我才能打开一个套接字) 大致来说,有没有办法 tcp::resolver::query query("localhost", port); 端口留空(将其设置为0不起作用) 前面提到的所有选项都不是可移植的或有效的。处理这一问题的最佳方法是让操作系统在套接字绑定到端口时选择一个随机可用的端口。告诉套接字绑定到端口0,如果成功,则查询套接字以查找它绑定到的实际端口

我目前正试图找到一种方法来找到一个空闲端口的数量来建立连接,最好是使用boost::asio。这个端口号将被用来监听(只有这样我才能打开一个套接字)

大致来说,有没有办法

   tcp::resolver::query query("localhost", port); 
端口留空(将其设置为0不起作用)


前面提到的所有选项都不是可移植的或有效的。

处理这一问题的最佳方法是让操作系统在套接字绑定到端口时选择一个随机可用的端口。告诉套接字绑定到端口0,如果成功,则查询套接字以查找它绑定到的实际端口。不要试图提前找到一个端口,然后绑定到它,这会引入竞争条件。另一个套接字可能会在您找到端口后但在您绑定它之前阻塞端口。

这是我最初的目标,但简单地将其传递给0是不起作用的,如问题澄清中所述:计算您如何初始化/获取
端点
?请出示您的实际代码。我已找到问题所在。正确的方法是tcp::resolver::query查询(“localhost”,”);我使用的第三方库需要指定的端口,而不是通过0。