使用 boost::asio 是一种便携式方法来查找可用端口号



我目前正在尝试找到一种方法来找到建立连接的可用端口的数量,最好是使用boost::asio。然后,此端口号将用于侦听(只有这样我才能打开套接字)。

粗略地说,有没有办法

   tcp::resolver::query query("localhost", port); 

端口留空的位置(将其设置为 0 不起作用)

以前看到的选项都不是便携式或高效的。

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

最新更新