我最近注意到我的应用程序存在问题,我认为这是因为我没有boost::asio
正确使用并且不了解 tcp 解析器的作用。
基本上,我使用 aboost::asio::ip::tcp::resolver
来获取要连接的端点。
我最近发现它可以提供多个端点(特别是当我连接到 localhost 时)。
目前,我要求提供async_connect
所有端点。我不是 100% 肯定,但我认为这很糟糕。我应该一个接一个地向他们请求 async_connect,等待回复,当且仅当它失败时再尝试下一个。
所以基本上知道如果我想async_connect
在这些端点上使用我有两个选择:
重构我的代码,以便我
async_connect
正确处理失败,并在失败时尝试连接到其他可用端点。那么我将不得不通过端点迭代器。删除解析器并使用我自己构建的端点,如下所示:
boost::asio::ip::tcp::endpoint("localhost", 20015)
我有一种感觉,我应该使用第一个解决方案,并且解析器带来的不仅仅是自构建的端点。
但是解析器带来了什么,自建端点如何自行解析呢?