Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как установить таймаут сокета для connect? / 25 сообщений из 29, страница 1 из 2
11.04.2007, 15:41
    #34453307
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Собстна, сабж.
...
Рейтинг: 0 / 0
11.04.2007, 15:54
    #34453354
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
А зачем?

Я не просто так спрашиваю - может мне тоже поможет такой тайм-аут, если у нас проблемы схожие?
Есть подозрение, что клиент уже получил подтверждение на коннект и шлёт запрос, а сервер ещё не все свои серверные дела сделал, чтобы этот запрос обработать.
Ну типа поток в многопоточности получил команду start, а физически ещё не успел стартовать по нормальному.
...
Рейтинг: 0 / 0
11.04.2007, 16:01
    #34453377
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
...
Рейтинг: 0 / 0
11.04.2007, 16:05
    #34453396
Lexogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Наиболее распостраненный метод организации таймаута при соединении к хосту реализуется через создание неблокирующего сокета и ожидании с помощью вызова select или poll. Есть еще способ с установкой alarm и обработкой сигнала от него, но этот вариант сложнее в реализации в связи с некоторыми проблемами...
...
Рейтинг: 0 / 0
11.04.2007, 16:14
    #34453430
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Gluk (Kazan), Lexogen: Ну, селект, понятно. Спасибо. Это я тоже нашел. Есть общесистемный таймаут, у ASP10-ки он, допустим, есть 3 минуты. Меня интересовало, есть ли таймаут для конкретного сокета?
...
Рейтинг: 0 / 0
11.04.2007, 16:22
    #34453470
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
ZmeisheА зачем?

Я не просто так спрашиваю - может мне тоже поможет такой тайм-аут, если у нас проблемы схожие?
Есть подозрение, что клиент уже получил подтверждение на коннект и шлёт запрос, а сервер ещё не все свои серверные дела сделал, чтобы этот запрос обработать.
Ну типа поток в многопоточности получил команду start, а физически ещё не успел стартовать по нормальному.

Ну, во первых, в любом случае есть таймаут, например общесистемный. Допустим ты его заходишь изменить для своего сокета, ну, для удобства, например.

А во вторых, допустим такая ситуация:
Есть объект, который является клиентом, он может быть сконнекчен, а может нет. Этот объект, есстественно, может отсылать данные. Для того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.

Или допустим мы не данные хотим отправлять, а убиваем программу. join()-им все потоки, и поток который пытается сконнектится будет нас держать.
...
Рейтинг: 0 / 0
11.04.2007, 16:31
    #34453506
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
AkhGluk (Kazan), Lexogen: Ну, селект, понятно. Спасибо. Это я тоже нашел. Есть общесистемный таймаут, у ASP10-ки он, допустим, есть 3 минуты. Меня интересовало, есть ли таймаут для конкретного сокета?

Гмм, а зачем ? select - куда уж гибче ???
...
Рейтинг: 0 / 0
11.04.2007, 16:32
    #34453512
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
AkhЕсть объект, который является клиентом, ...
С клиентом понял.
У меня серверные непонятки. Буду дальше грызть.
...
Рейтинг: 0 / 0
11.04.2007, 16:34
    #34453524
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
AkhА во вторых, допустим такая ситуация:
Есть объект, который является клиентом, он может быть сконнекчен, а может нет. Этот объект, есстественно, может отсылать данные. Для того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.


Что правда сокет без лишних телодвижений тупо пытается законнектится 3 минуты ???
у меня была необходимость увеличивать таймаут, а не уменьшать :)
...
Рейтинг: 0 / 0
11.04.2007, 16:36
    #34453528
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Zmeishe AkhЕсть объект, который является клиентом, ...
С клиентом понял.
У меня серверные непонятки. Буду дальше грызть.

По моему вы излишне усложняете себе жизнь. Можете описать конкретную проблему ?
...
Рейтинг: 0 / 0
11.04.2007, 16:38
    #34453541
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Gluk (Kazan) AkhGluk (Kazan), Lexogen: Ну, селект, понятно. Спасибо. Это я тоже нашел. Есть общесистемный таймаут, у ASP10-ки он, допустим, есть 3 минуты. Меня интересовало, есть ли таймаут для конкретного сокета?

Гмм, а зачем ? select - куда уж гибче ???

Да, я не против селекта. Я, опцию выставил бы и все. :)
...
Рейтинг: 0 / 0
11.04.2007, 16:41
    #34453558
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Gluk (Kazan) AkhА во вторых, допустим такая ситуация:
Есть объект, который является клиентом, он может быть сконнекчен, а может нет. Этот объект, есстественно, может отсылать данные. Для того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.


Что правда сокет без лишних телодвижений тупо пытается законнектится 3 минуты ???
у меня была необходимость увеличивать таймаут, а не уменьшать :)

Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол....
...
Рейтинг: 0 / 0
11.04.2007, 16:47
    #34453590
Lexogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Akh
Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол....

А трафик уже сниферился? При похожих проблемах использовал tcpdump на серверной и клиентской стороне. Было видно на какой стадии зависло установление соединения (ASK,SYN...).
...
Рейтинг: 0 / 0
11.04.2007, 16:50
    #34453612
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Lexogen Akh
Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол....

А трафик уже сниферился? При похожих проблемах использовал tcpdump на серверной и клиентской стороне. Было видно на какой стадии зависло установление соединения (ASK,SYN...).

+1 может висеть на не до конца установленном соединении
tcpdump обязательно
...
Рейтинг: 0 / 0
11.04.2007, 16:51
    #34453616
Lexogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
AkhЛогично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.
А не лучше ли было сделать массив переменных, в которых содержится статус соединения (connected,disconnected,inconnect) и уже доступ к ним синхронизировать?
Akh
Или допустим мы не данные хотим отправлять, а убиваем программу. join()-им все потоки, и поток который пытается сконнектится будет нас держать.
В потоке сделать обработчик сигнала, который прервет выполнения вызова connect и корректно завершит поток.
...
Рейтинг: 0 / 0
11.04.2007, 16:57
    #34453653
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Lexogen AkhЛогично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.
А не лучше ли было сделать массив переменных, в которых содержится статус соединения (connected,disconnected,inconnect) и уже доступ к ним синхронизировать?
Akh
Или допустим мы не данные хотим отправлять, а убиваем программу. join()-им все потоки, и поток который пытается сконнектится будет нас держать.
В потоке сделать обработчик сигнала, который прервет выполнения вызова connect и корректно завершит поток.

1. Первый поток обращается к массиву, и там все гуд. Второй поток в это время видит, что соединению капут и удаляет объект соединения. Первый поток вылетает в sigmentation fail.

2. Как прервет?

ПС: Я не говорю, что нет других методов решений, случаи то разные бывают. :)
...
Рейтинг: 0 / 0
11.04.2007, 16:59
    #34453663
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Lexogen Akh
Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол....

А трафик уже сниферился? При похожих проблемах использовал tcpdump на серверной и клиентской стороне. Было видно на какой стадии зависло установление соединения (ASK,SYN...).

Не снифирился. Возникла проблема, определился, что в виснет connect(), начал искать решение.
...
Рейтинг: 0 / 0
11.04.2007, 17:00
    #34453668
Zmeishe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Gluk (Kazan) По моему вы излишне усложняете себе жизнь. Можете описать конкретную проблему ?
Могу.
Тока другой топик открою, чтобы из этого месиво не устраивать.
...
Рейтинг: 0 / 0
11.04.2007, 17:04
    #34453690
Lexogen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Akh
1. Первый поток обращается к массиву, и там все гуд. Второй поток в это время видит, что соединению капут и удаляет объект соединения. Первый поток вылетает в sigmentation fail.

Первый поток блокирует мьютекс и читает статус соединения, разблокирует. Второй ждет освобождения мьютекса, захватывает и устанавливает статус соединения в disconnected, освобождает мьютекс. Можна поточнее сказать когда sigmentation fail ?
Akh
2. Как прервет?

Если установлен обработчик сигнала, то при поступлении оного вызывается соответсвующий обработчик с прерыванием выполнения любых блокирующих функций.
...
Рейтинг: 0 / 0
11.04.2007, 17:17
    #34453747
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
таймаут точно можно установить. (сам устанаваливал давно)

скорее в параметрах сокета (setsockopt чтоле)

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
11.04.2007, 17:20
    #34453756
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Lexogen Akh
1. Первый поток обращается к массиву, и там все гуд. Второй поток в это время видит, что соединению капут и удаляет объект соединения. Первый поток вылетает в sigmentation fail.

Первый поток блокирует мьютекс и читает статус соединения, разблокирует. Второй ждет освобождения мьютекса, захватывает и устанавливает статус соединения в disconnected, освобождает мьютекс. Можна поточнее сказать когда sigmentation fail ?
Akh
2. Как прервет?

Если установлен обработчик сигнала, то при поступлении оного вызывается соответсвующий обработчик с прерыванием выполнения любых блокирующих функций.

В огороде бузина а в киеве дядька. :) Я привел общие примеры, не расписывая детали, чтобы показать, где могут возникнуть проблемы с зависанием connect(). А, если расписать детали то видение конкретных схем у вас сложится совсем другое. Например, для п.2, думаю, вы и сами догадались, что в данном случае имелись в виду синхронные сокеты. Ну а в п.1 у меня для объекта езернет tcp создается объект коннекшион, который в данном случае является клиентом. Вот про него я и говорил, что может произойти sigmentation fail.
...
Рейтинг: 0 / 0
11.04.2007, 17:21
    #34453761
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Aklinтаймаут точно можно установить. (сам устанаваливал давно)

скорее в параметрах сокета (setsockopt чтоле)

аффтопитезь: объект либо именован, либо не существует

Не-а. тама нету [setsockopt]. весь просмотрел.
...
Рейтинг: 0 / 0
11.04.2007, 17:22
    #34453763
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Akh Aklinтаймаут точно можно установить. (сам устанаваливал давно)

скорее в параметрах сокета (setsockopt чтоле)

аффтопитезь: объект либо именован, либо не существует

Не-а. тама нету [setsockopt]. весь просмотрел.

где-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно...
...
Рейтинг: 0 / 0
11.04.2007, 17:22
    #34453765
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Далее сабж носит позновательный характер, т.к. сделал через select.
...
Рейтинг: 0 / 0
11.04.2007, 17:25
    #34453778
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как установить таймаут сокета для connect?
Aklinгде-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно...

тута? сабж не нашел
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как установить таймаут сокета для connect? / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]