我有以下代码:
...
namespace ba = boost::asio;
...
ba::ip::tcp::resolver resolver(ioService);
ba::ip::tcp::socket sock(ioService);
ba::ip::tcp::resolver::query query(the_ip, the_port);
ba::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
ba::ip::tcp::resolver::iterator end;
boost::system::error_code error = ba::error::host_not_found;
while (error && (endpoint_iterator != end))
{
sock.close();
sock.connect(*endpoint_iterator++, error);
}
当服务器启动时,它立即连接,其余的代码流动性很好,但是当服务器脱机或无法访问时,这将永远退出。
之前:09:04:37
退出时:09:05:40
由于我提供查询一个IP和一个端口,如果没有建立连接,它不应该立即退出吗?
我没有配置任何参数吗?像“尝试X次”或“尝试Y秒”之类的东西?
编辑: 正如评论中所见,问题似乎是在互联网上搜索,但连接是本地的! (192.168 ...)
为什么在互联网上搜索本地IP?
答案 0 :(得分:0)
正如@MartinJames在评论中所说:
“互联网非常庞大,并且有各种各样的链接,有些具有非常高的延迟。 因此,确定不可达性需要很长时间。 当你将一个星球上的所有计算机连接在一起时会发生这种情况。“
我尝试断开互联网,然后立即退出。
但我使用的IP是本地的(192.168 ......),所以这仍然很奇怪。
谢谢,伙计。