powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как установить таймаут сокета для connect?
29 сообщений из 29, показаны все 2 страниц
Как установить таймаут сокета для connect?
    #34453307
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собстна, сабж.
...
Рейтинг: 0 / 0
Как установить таймаут сокета для connect?
    #34453354
Фотография Zmeishe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем?

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

тута? сабж не нашел
...
Рейтинг: 0 / 0
Как установить таймаут сокета для connect?
    #34454187
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Aklinгде-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно...

тута? сабж не нашел

не знаю, как на соединение, а на отправку/прием я ставил так:

Код: plaintext
\t//Установка таймаута\n\tint iBuf;\n\tiBuf =  100 ;\n\tsetsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*)&iBuf, sizeof(iBuf));\n\tsetsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&iBuf, sizeof(iBuf));
...
Рейтинг: 0 / 0
Как установить таймаут сокета для connect?
    #34454941
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aklin Akh Aklinгде-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно...

тута? сабж не нашел

не знаю, как на соединение, а на отправку/прием я ставил так:

Код: plaintext
\t//Установка таймаута\n\tint iBuf;\n\tiBuf =  100 ;\n\tsetsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char*)&iBuf, sizeof(iBuf));\n\tsetsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char*)&iBuf, sizeof(iBuf));


Так сабж про соединение.
...
Рейтинг: 0 / 0
Как установить таймаут сокета для connect?
    #34456519
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhДля того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.Это уж как напишешь. Если коннект ещё не установлен, значит нет ещё коннекта, чиво нипанятна-та? тынц
...
Рейтинг: 0 / 0
Как установить таймаут сокета для connect?
    #34456548
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo AkhДля того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.Это уж как напишешь. Если коннект ещё не установлен, значит нет ещё коннекта, чиво нипанятна-та? тынц

Есстестно. Все понятно.

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


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