8

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

粗略,有没有办法

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

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

之前看到的所有选项都不是可移植的或高效的。

4

1 回答 1

12

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

于 2012-12-06T01:43:03.443 回答