我开始使用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);
}
如果我的问题没有提供足够的信息,请帮助我并原谅我。
答案 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的更正)。