boost :: asio :: ip :: tcp :: resolver :: iterator有什么作用?

时间:2011-02-24 20:42:27

标签: c++ boost boost-asio

我开始使用C ++中的boost asio编程,在查看示例时,我无法理解boost::asio::ip::tcp::resolver::iterator做了什么。

代码:

boost::asio::io_service io_service;

tcp::resolver resolver(io_service);
tcp::resolver::query query(argv[1]);
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;

tcp::socket socket(io_service);
boost::system::error_code error = boost::asio::error::host_not_found;
while (error && endpoint_iterator != end)
{
  socket.close();
  socket.connect(*endpoint_iterator++, error);
}

如果我的问题没有提供足够的信息,请帮助我并原谅我。

1 个答案:

答案 0 :(得分:20)

boost::asio::ip::tcp::resolver::iterator遍历您指定的主机的地址列表(主机可以有多个地址)。

就像std :: string :: iterator遍历其字符一样,boost :: asio :: ip :: tcp :: resolver :: iterator遍历其地址列表。

以下代码:

while (error && endpoint_iterator != end)
{
  socket.close();
  socket.connect(*endpoint_iterator++, error);
}

正在尝试与每个端点建立连接,直到它成功或耗尽端点(感谢您对Eugen Constantin Dinca的更正)。