Скомпилировал примеры синхронного сервера и клиента. клиент сервер
Телнетом захожу на сервер, все ок.
Однако этот код из примера клиента завершает выполнение.
while (error && endpoint_iterator != end)
{
socket.close();
socket.connect(* endpoint_iterator++, error);
}
if (error)
{
throw boost::system::system_error(error);
}
выдает ошибку "Не удается найти указанный файл" error_code.value() == 2.
Это притом что сокет на самом деле открывается и коннектиться. Я получаю время если продолжаю выполнение программы. В чем проблема?
ПС: OS Windows
06.03.08 13:51: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, Gusher, Вы писали: G>Однако этот код из примера клиента завершает выполнение. G> выдает ошибку "Не удается найти указанный файл" error_code.value() == 2. G>ПС: OS Windows
Т.е при выходе из цикла у тебя выбрасывается исключение?
Странно, под Linux работает нормально. А под виндами нет возможности проверить.
Попробуй переписать этот кусок так чтобы error не инициализировалась при создании, а первый вызов connect вынести за
пределы цикла.
Спасибо за ответы.
Смог поправить, только не понял как
Кажется asio даже ipv4 передает как ipv6. по крайней мере размер в ::connect 16 байт, поставил протокол ipv6. Но эффекта сразу это не дало. Повыключал сервисы, антивирус и т.д. Потом вдруг заработало
Кажется все-таки помогла установка ipv6, только применилось изменение не сразу.
Здравствуйте, Gusher, Вы писали:
G>Спасибо за ответы. G>Смог поправить, только не понял как G>Кажется asio даже ipv4 передает как ipv6. по крайней мере размер в ::connect 16 байт, поставил протокол ipv6. Но эффекта сразу это не дало. Повыключал сервисы, антивирус и т.д. Потом вдруг заработало G>Кажется все-таки помогла установка ipv6, только применилось изменение не сразу.
Ну-ну. Как заработало, так и перестанет.
V>Нет,никаких отрицаний, просто автор в первом посте привел не полный код. В реальности это выглядит так
Я имею в виду, что по логике вроде как должно быть "выполнять, пока нет ошибки и остались ендпоинты", а не "выполнять, пока ошибка и остались ендпоинты".
G> выдает ошибку "Не удается найти указанный файл" error_code.value() == 2. G>Это притом что сокет на самом деле открывается и коннектиться. Я получаю время если продолжаю выполнение программы. В чем проблема? G>ПС: OS Windows
Я думаю ошибка не в это месте. Судя по ошибке сокет уже закрыли с другой стороны.