Я недавно создал некоторый 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);
}
Теперь после этого блока кода переменная ошибки содержит сообщение:
Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, так как подключенный хост не смог ответить.
Выполнение одного и того же кода (приложения) на нескольких других ПК работает отлично! Теперь различия есть (хотя мы не знаем, какие из них имеют решающее значение):
- Целевой операционной системой является Windows XP SP3 x32 (у нас все Windows 7 x64). Само приложение 32-битное.
- Целевой компьютер имеет подключение vpn или dial-in, определенные в настройках Интернета. Теперь я могу представить, что в этом источник проблемы.
- Я не знаю, есть ли где-нибудь прокси, но это также может вызвать проблемы.
Итак, мои вопросы будут такими: может ли любое из этих различий вызвать такие проблемы? И если так: могу ли я что-нибудь с этим сделать?
EDIT
Скорее всего, проблема вызвана маршрутизатором / проводным экраном корпоративной сети. При подключении к гостевой сети с целевой машиной все работает нормально. Только в корпоративной сети при попытке подключения выдается указанное выше сообщение об ошибке.