use*_*513 8 c++ sockets port boost tcp
我正在试图找到一种方法来找到建立连接的自由端口的数量,理想情况下使用boost :: asio.然后将使用此端口号进行监听(然后才能打开套接字).
粗略地说,有办法吗?
tcp::resolver::query query("localhost", port);
Run Code Online (Sandbox Code Playgroud)
端口留空的位置(将其设置为0不起作用)
以前看到的选项都不是便携式的,也不是高效的.
Rem*_*eau 11
处理此问题的最佳方法是让操作系统在套接字绑定到端口时选择随机可用端口.告诉套接字绑定到端口0,然后查询套接字,看它绑定的实际端口是否成功.不要试图提前找到一个端口然后绑定它,这会引入竞争条件.另一个套接字可能会在您找到它之后但在绑定它之前阻塞该端口.