我最近构建了一些com对象嵌入到Internet Explorer中。在那里我使用boost-asio来发出http请求。通常这个功能非常好。但是在客户端环境中socket.connect();无法连接。关键段落如下:
boost::asio::io_service ioService;
tcp::resolver resolver(ioService);
tcp::resolver::query query(serverAdress, "http");
tcp::resolver::iterator endpointIterator = resolver.resolve(query);
tcp::resolver::iterator end;
tcp::socket socket(ioService);
boost::system::error_code error = boost::asio::error::host_not_found;
while (error && endpointIterator != end)
{
socket.close();
socket.connect(*endpointIterator++, error);
}
现在在该代码块之后,错误变量保存消息:
连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。
在其他几台PC上执行相同的代码(应用程序)非常完美!现在差异是(虽然不知道哪些是至关重要的):
所以,我的问题是:这些差异中的任何一个都会导致这类问题吗?如果是这样的话,我能做些什么吗?
修改
最有可能的问题是公司网络的路由器/线墙造成的。使用目标计算机连接到访客网络时,一切正常。仅在公司网络中,连接尝试才会发出前面提到的错误消息。