Таймауты в сокетах
Модераторы: Duncon, Hawk, Romeo, Eugie
Subj собственно. SO_RCVTIMEO и SO_SNDTIMEO это конечно хорошо, но send и recv зависают крайне редко, особенно если буффер небольшой. Больше интересует как установить таймаут для gethostbyname и, особенно, для connect. Очень раздражают чуть ли не бесконечные зависания если сеть есть, но инета - нет или DNS сервер провайдера помер. Версия сокетов из последних 2.2
Кстати, паралелльный вопрос: каков оптимальный/рекомендуемый/дефолтный размер буффера для send?
P.S: с благодарностью приму ссылки на толковое описание принципов работы с WinSock.
Кстати, паралелльный вопрос: каков оптимальный/рекомендуемый/дефолтный размер буффера для send?
P.S: с благодарностью приму ссылки на толковое описание принципов работы с WinSock.
Даже самый дурацкий замысел можно воплотить мастерски
не знаю как установить таймаут - сам в свое время искал - не нашел и сделал следующее - многопотоковость товарищи это будущее (благо железо позволяет).
Я все такие операции выносил в отдельный поток
Я все такие операции выносил в отдельный поток
Kolinus, многопоточность это хорошо, и, допустим, при помощи select я узнаю произошёл коннект или нет, и если нет, то завершу поток, который завис на connect. Но вот никак не могу взять в толк, как извратится подобным образом для операции gethostbyname?
Даже самый дурацкий замысел можно воплотить мастерски
А в чем собсно проблема?
создаешь поток который вызывает метод gethostbyname и завершает сам себя. если get.. вернула не NULL - сохраняет куда-то стуктуру.
если нет - то ничего
создаешь поток который вызывает метод gethostbyname и завершает сам себя. если get.. вернула не NULL - сохраняет куда-то стуктуру.
если нет - то ничего
Kolinus, молодца! Только если DNS сервер не доступен, то gethostbyname ничего не возвращает ок 30 секунд. Что есть неприемлемо. Адназначна! 

Даже самый дурацкий замысел можно воплотить мастерски
А ты уверен чт отебе без гетхостбайнейм ну никак не обойтись?
гетхостбайадресс например на вин2к ждет всего 8 секунд
и второе - а почему неприемлимо?? основная прога-то не подвиснет и будет на все реагировать - ну а тут коннект и коннект - ждите (даже прогрессбар можно нарисовать
)
гетхостбайадресс например на вин2к ждет всего 8 секунд
и второе - а почему неприемлимо?? основная прога-то не подвиснет и будет на все реагировать - ну а тут коннект и коннект - ждите (даже прогрессбар можно нарисовать

Угу. Почему-то сокет не создаётся по имениА ты уверен чт отебе без гетхостбайнейм ну никак не обойтись?

Фигу. Если сетки нет совсем, то он таки да, около 5 секунд думает. А вот если сеть есть, но DNS сервер помер, то около 25-ти (+\- 5)секунд думает.гетхостбайадресс например на вин2к ждет всего 8 секунд
Не тот случай.даже прогрессбар можно нарисовать
Полагаю, что придётся флажками обвешиваться.
Даже самый дурацкий замысел можно воплотить мастерски
Меня уже и цитируют - круто
Тогда еще два варианта - вариант номер 1 сделать еще один поток который будет убивать поток с гет... через нужное время.
Вариант номер зва - где-то в инете (coeproject.ru(com) sources.ru codeguru.ru(com)) я видел исходники утилитки ping - может они помогут - пинг -то вроде быстро работает

Тогда еще два варианта - вариант номер 1 сделать еще один поток который будет убивать поток с гет... через нужное время.
Вариант номер зва - где-то в инете (coeproject.ru(com) sources.ru codeguru.ru(com)) я видел исходники утилитки ping - может они помогут - пинг -то вроде быстро работает
сорри - codeproject.ru(com)
В SAD - все в SAD.
Kolinus, ага - следующий совет взять исходники Mozilla, или в крайнем случае Firefox и посмотреть как люди делают. Тоже быстро работает 

Даже самый дурацкий замысел можно воплотить мастерски