|
|
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Собстна, сабж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 15:41 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
А зачем? Я не просто так спрашиваю - может мне тоже поможет такой тайм-аут, если у нас проблемы схожие? Есть подозрение, что клиент уже получил подтверждение на коннект и шлёт запрос, а сервер ещё не все свои серверные дела сделал, чтобы этот запрос обработать. Ну типа поток в многопоточности получил команду start, а физически ещё не успел стартовать по нормальному. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 15:54 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:01 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Наиболее распостраненный метод организации таймаута при соединении к хосту реализуется через создание неблокирующего сокета и ожидании с помощью вызова select или poll. Есть еще способ с установкой alarm и обработкой сигнала от него, но этот вариант сложнее в реализации в связи с некоторыми проблемами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:05 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan), Lexogen: Ну, селект, понятно. Спасибо. Это я тоже нашел. Есть общесистемный таймаут, у ASP10-ки он, допустим, есть 3 минуты. Меня интересовало, есть ли таймаут для конкретного сокета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:14 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
ZmeisheА зачем? Я не просто так спрашиваю - может мне тоже поможет такой тайм-аут, если у нас проблемы схожие? Есть подозрение, что клиент уже получил подтверждение на коннект и шлёт запрос, а сервер ещё не все свои серверные дела сделал, чтобы этот запрос обработать. Ну типа поток в многопоточности получил команду start, а физически ещё не успел стартовать по нормальному. Ну, во первых, в любом случае есть таймаут, например общесистемный. Допустим ты его заходишь изменить для своего сокета, ну, для удобства, например. А во вторых, допустим такая ситуация: Есть объект, который является клиентом, он может быть сконнекчен, а может нет. Этот объект, есстественно, может отсылать данные. Для того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта. Или допустим мы не данные хотим отправлять, а убиваем программу. join()-им все потоки, и поток который пытается сконнектится будет нас держать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:22 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
AkhGluk (Kazan), Lexogen: Ну, селект, понятно. Спасибо. Это я тоже нашел. Есть общесистемный таймаут, у ASP10-ки он, допустим, есть 3 минуты. Меня интересовало, есть ли таймаут для конкретного сокета? Гмм, а зачем ? select - куда уж гибче ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:31 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
AkhЕсть объект, который является клиентом, ... С клиентом понял. У меня серверные непонятки. Буду дальше грызть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:32 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
AkhА во вторых, допустим такая ситуация: Есть объект, который является клиентом, он может быть сконнекчен, а может нет. Этот объект, есстественно, может отсылать данные. Для того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта. Что правда сокет без лишних телодвижений тупо пытается законнектится 3 минуты ??? у меня была необходимость увеличивать таймаут, а не уменьшать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:34 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Zmeishe AkhЕсть объект, который является клиентом, ... С клиентом понял. У меня серверные непонятки. Буду дальше грызть. По моему вы излишне усложняете себе жизнь. Можете описать конкретную проблему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:36 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) AkhGluk (Kazan), Lexogen: Ну, селект, понятно. Спасибо. Это я тоже нашел. Есть общесистемный таймаут, у ASP10-ки он, допустим, есть 3 минуты. Меня интересовало, есть ли таймаут для конкретного сокета? Гмм, а зачем ? select - куда уж гибче ??? Да, я не против селекта. Я, опцию выставил бы и все. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:38 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) AkhА во вторых, допустим такая ситуация: Есть объект, который является клиентом, он может быть сконнекчен, а может нет. Этот объект, есстественно, может отсылать данные. Для того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта. Что правда сокет без лишних телодвижений тупо пытается законнектится 3 минуты ??? у меня была необходимость увеличивать таймаут, а не уменьшать :) Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:41 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Akh Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол.... А трафик уже сниферился? При похожих проблемах использовал tcpdump на серверной и клиентской стороне. Было видно на какой стадии зависло установление соединения (ASK,SYN...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:47 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Lexogen Akh Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол.... А трафик уже сниферился? При похожих проблемах использовал tcpdump на серверной и клиентской стороне. Было видно на какой стадии зависло установление соединения (ASK,SYN...). +1 может висеть на не до конца установленном соединении tcpdump обязательно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:50 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
AkhЛогично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта. А не лучше ли было сделать массив переменных, в которых содержится статус соединения (connected,disconnected,inconnect) и уже доступ к ним синхронизировать? Akh Или допустим мы не данные хотим отправлять, а убиваем программу. join()-им все потоки, и поток который пытается сконнектится будет нас держать. В потоке сделать обработчик сигнала, который прервет выполнения вызова connect и корректно завершит поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:51 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Lexogen AkhЛогично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта. А не лучше ли было сделать массив переменных, в которых содержится статус соединения (connected,disconnected,inconnect) и уже доступ к ним синхронизировать? Akh Или допустим мы не данные хотим отправлять, а убиваем программу. join()-им все потоки, и поток который пытается сконнектится будет нас держать. В потоке сделать обработчик сигнала, который прервет выполнения вызова connect и корректно завершит поток. 1. Первый поток обращается к массиву, и там все гуд. Второй поток в это время видит, что соединению капут и удаляет объект соединения. Первый поток вылетает в sigmentation fail. 2. Как прервет? ПС: Я не говорю, что нет других методов решений, случаи то разные бывают. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:57 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Lexogen Akh Да, блин. Причем по невыясненым обстаятельствам, временами сразу отваливается, времени висит. Было бы желание/время, разобрался бы. Может зависит от удаленной стороны выключена/включена/файервол.... А трафик уже сниферился? При похожих проблемах использовал tcpdump на серверной и клиентской стороне. Было видно на какой стадии зависло установление соединения (ASK,SYN...). Не снифирился. Возникла проблема, определился, что в виснет connect(), начал искать решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 16:59 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) По моему вы излишне усложняете себе жизнь. Можете описать конкретную проблему ? Могу. Тока другой топик открою, чтобы из этого месиво не устраивать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:00 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Akh 1. Первый поток обращается к массиву, и там все гуд. Второй поток в это время видит, что соединению капут и удаляет объект соединения. Первый поток вылетает в sigmentation fail. Первый поток блокирует мьютекс и читает статус соединения, разблокирует. Второй ждет освобождения мьютекса, захватывает и устанавливает статус соединения в disconnected, освобождает мьютекс. Можна поточнее сказать когда sigmentation fail ? Akh 2. Как прервет? Если установлен обработчик сигнала, то при поступлении оного вызывается соответсвующий обработчик с прерыванием выполнения любых блокирующих функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:04 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
таймаут точно можно установить. (сам устанаваливал давно) скорее в параметрах сокета (setsockopt чтоле) аффтопитезь: объект либо именован, либо не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:17 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Lexogen Akh 1. Первый поток обращается к массиву, и там все гуд. Второй поток в это время видит, что соединению капут и удаляет объект соединения. Первый поток вылетает в sigmentation fail. Первый поток блокирует мьютекс и читает статус соединения, разблокирует. Второй ждет освобождения мьютекса, захватывает и устанавливает статус соединения в disconnected, освобождает мьютекс. Можна поточнее сказать когда sigmentation fail ? Akh 2. Как прервет? Если установлен обработчик сигнала, то при поступлении оного вызывается соответсвующий обработчик с прерыванием выполнения любых блокирующих функций. В огороде бузина а в киеве дядька. :) Я привел общие примеры, не расписывая детали, чтобы показать, где могут возникнуть проблемы с зависанием connect(). А, если расписать детали то видение конкретных схем у вас сложится совсем другое. Например, для п.2, думаю, вы и сами догадались, что в данном случае имелись в виду синхронные сокеты. Ну а в п.1 у меня для объекта езернет tcp создается объект коннекшион, который в данном случае является клиентом. Вот про него я и говорил, что может произойти sigmentation fail. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:20 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Aklinтаймаут точно можно установить. (сам устанаваливал давно) скорее в параметрах сокета (setsockopt чтоле) аффтопитезь: объект либо именован, либо не существует Не-а. тама нету [setsockopt]. весь просмотрел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:21 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Akh Aklinтаймаут точно можно установить. (сам устанаваливал давно) скорее в параметрах сокета (setsockopt чтоле) аффтопитезь: объект либо именован, либо не существует Не-а. тама нету [setsockopt]. весь просмотрел. где-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:22 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Далее сабж носит позновательный характер, т.к. сделал через select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:22 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Aklinгде-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно... тута? сабж не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 17:25 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Akh Aklinгде-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно... тута? сабж не нашел не знаю, как на соединение, а на отправку/прием я ставил так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2007, 19:25 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
Aklin Akh Aklinгде-то в этом форуме валялся иходник моего пингера (искать по сырые или RAW сокты) там есть таймаут на что-то... возможно... тута? сабж не нашел не знаю, как на соединение, а на отправку/прием я ставил так: Код: plaintext Так сабж про соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 09:59 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
AkhДля того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.Это уж как напишешь. Если коннект ещё не установлен, значит нет ещё коннекта, чиво нипанятна-та? тынц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 15:43 |
|
||
|
Как установить таймаут сокета для connect?
|
|||
|---|---|---|---|
|
#18+
maXmo AkhДля того, чтобы отослать данные, ему надо проверить, а сконнекчен ли он. Это свойство меняется когда производиться попытка коннекта. Логично это все дело замьютексить, и получается, что при попытки отсылки данных, если коннекта нет, то поток отсылающий данные будет заблокирован пока не отвалится таймаут попытки коннекта.Это уж как напишешь. Если коннект ещё не установлен, значит нет ещё коннекта, чиво нипанятна-та? тынц Есстестно. Все понятно. ПС: Засрали весь инет ктулху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2007, 15:54 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2029064]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 527ms |

| 0 / 0 |
