提升asio连接试用需要太长时间

时间:2014-02-06 11:11:46

标签: sockets boost-asio delay

我有以下代码:

...
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?

1 个答案:

答案 0 :(得分:0)

正如@MartinJames在评论中所说:

  

“互联网非常庞大,并且有各种各样的链接,有些具有非常高的延迟。       因此,确定不可达性需要很长时间。       当你将一个星球上的所有计算机连接在一起时会发生这种情况。“

我尝试断开互联网,然后立即退出。

但我使用的IP是本地的(192.168 ......),所以这仍然很奇怪。

谢谢,伙计。