Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие connect(а) 
:(
    Опции темы
SVN74
Дата 24.7.2012, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Доброго времени суток!
Подскажите пожалуйста как мне закрыть (блокирующий) connect досрочно (это необходимо для быстрого закрытия программы) , к примеру как в браузер(ах) ?   
PM MAIL WWW   Вверх
boostcoder
Дата 24.7.2012, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



использовать async_connect() ;)

PM WWW   Вверх
SVN74
Дата 24.7.2012, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Цитата(boostcoder @  24.7.2012,  10:40 Найти цитируемый пост)
использовать async_connect() ;)

Идея хорошая, но проблема в том, что в программе уже все реализовано на обычных (блокирующих) WinSoket(ах), - моя задача просто быстро закрыть программу.  
PM MAIL WWW   Вверх
boostcoder
Дата 24.7.2012, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110




ну так замени на asio.
либо используй asio сокет и асинхронный коннект, а все остальное оставь как прежде. благо, asio::socket возвращает нативный дескриптор.

зы
я хз, почему программисты сами создают себе проблемы smile 
PM WWW   Вверх
feodorv
Дата 24.7.2012, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 10
Всего: 45



Не помню точно, как я когда-то решал подобную проблему, но можно попробовать закрыть сокет через closesocket (или просто close на юниксах) из другого потока...

Цитата(SVN74 @  24.7.2012,  11:27 Найти цитируемый пост)
как мне закрыть (блокирующий) connect

А приложение в добавок однопоточное?

Конечно, boostcoder прав. Нужен неблокирующий сокет. Если вся программа уже настроена на блокирующий сокет, то, по крайней мере, connect можно реализовать с помощью неблокируемого сокета, а затем перевести его обратно в блокирующее состояние через ioctlsocket( FIONBIO ) или аналогом, если дело происходит не на виндах.



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
SVN74
Дата 24.7.2012, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Всем спасибо, просто сделаю неблокирующий connect.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0945 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.