пятница, 24 июня 2011 г.

Utilizing ConnectEx with asio::windows::overlapped_ptr

Наверное многие Windows-программисты чесали репу смущались, когда узнавали, что Asio реализует асинхронный socket::async_connect при помощи select и дополнительного скрытого/внутреннего потока. Видимо, все дело в поддержке Windows 2000 - функция ConnectEx (судя по MSDN) появляется только в Windows XP.

Почему-то сегодня утром я вспомнил про интересный пример с использованием произвольной IOCP-related WinAPI функции совместно с Asio. Вспомнил и про многострадальный ConnectEx (до сегодняшнего утра ConnectEx использовать не приходилось - занимался только серверами и никогда не занимался клиентами).

Так вот - скрестить asio::windows::overlapped_ptr и ConnectEx оказалось очень просто - 2 часа и первый вариант готов.

Всех интересующихся прошу в SVN на sf.net. Самая интересная часть кода - очередной copy/paste из Asio examples (transmit_file.cpp).

Viva Asio!

Updated: проект async_connect уже включен в новый downloadable пакет.

5 комментариев:

niXman комментирует...

Спасибо Вам за еще одну новость!

Marat Abrarov комментирует...

Надеюсь, это кому-то нужно. Судя по списку рассылки asio-users и Вашему комментарию - нужно уже троим (включая меня).

niXman комментирует...

:D
Всем нужно! Просто они еще не знают об этом :)

Анонимный комментирует...

Ну, а результат-то какой?

Marat Abrarov комментирует...

Ну, а результат-то какой?

Результат? Проект async_connect работает и давно включен в состав загружаемого архива исходников на http://sourceforge.net/projects/asio-samples/