| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Закрытие connect(а) |
| Автор: SVN74 24.7.2012, 10:27 |
| Доброго времени суток! Подскажите пожалуйста как мне закрыть (блокирующий) connect досрочно (это необходимо для быстрого закрытия программы) , к примеру как в браузер(ах) ? |
| Автор: boostcoder 24.7.2012, 10:40 |
| использовать http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/reference/basic_stream_socket/async_connect.html ;) |
| Автор: SVN74 24.7.2012, 11:23 |
Идея хорошая, но проблема в том, что в программе уже все реализовано на обычных (блокирующих) WinSoket(ах), - моя задача просто быстро закрыть программу. |
| Автор: boostcoder 24.7.2012, 12:58 |
ну так замени на asio. либо используй asio сокет и асинхронный коннект, а все остальное оставь как прежде. благо, asio::socket http://www.boost.org/doc/libs/1_50_0/doc/html/boost_asio/reference/basic_stream_socket/native_handle.html. зы я хз, почему программисты сами создают себе проблемы |
| Автор: feodorv 24.7.2012, 15:16 |
| Не помню точно, как я когда-то решал подобную проблему, но можно попробовать закрыть сокет через closesocket (или просто close на юниксах) из другого потока... А приложение в добавок однопоточное? Конечно, boostcoder прав. Нужен неблокирующий сокет. Если вся программа уже настроена на блокирующий сокет, то, по крайней мере, connect можно реализовать с помощью неблокируемого сокета, а затем перевести его обратно в блокирующее состояние через ioctlsocket( FIONBIO ) или аналогом, если дело происходит не на виндах. |
| Автор: SVN74 24.7.2012, 20:06 |
| Всем спасибо, просто сделаю неблокирующий connect. |