boost :: asio не может подключить сокет - PullRequest
0 голосов
/ 05 апреля 2011

Я недавно создал некоторый 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

Скорее всего, проблема вызвана маршрутизатором / проводным экраном корпоративной сети. При подключении к гостевой сети с целевой машиной все работает нормально. Только в корпоративной сети при попытке подключения выдается указанное выше сообщение об ошибке.

...