|
|
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Есть TCP-сервер Клиент подключается и ждет команд от него. иногда команды могут приходить очень редко. Соответственно, при дисконнекте, когда связь рвется физически, никакого отличия от ошибки по таймауту я не наблюдаю. И в списке портов это соединение также висит в статусе "Established" Что посоветуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2019, 22:50 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Cobalt747Что посоветуете? Добавить в прикладной протокол PING-пакет, посылаемый при отсутствии другой активности в течении ХХ секунд. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 00:28 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
А может и таймаутом поиграть. Пинг-то он всеяден пр портам... А дисконнект это что? Пьяный тракторист кабло распахал? Лавина/наводнение/миру кирдых? При отдыхе, сервак по идее должен команду разослать типа BYE, "ушла на базу", "спать ложусь до NN:mm" ... А кто прочухал, тот сам себе злобный клиентурко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 01:41 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 06:58 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
GatorА может и таймаутом поиграть. Пинг-то он всеяден пр портам... herfkbwj ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 07:41 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Cobalt747Есть TCP-сервер Клиент подключается и ждет команд от него. Что-то тут не так. Обычно клиент посылает команды серверу. Речь идет про Indy ? Клиент устанавливает соединение с сервером и висит, ждет команды ? Лучше, если клиент будет раз в X секунд открывать соединение с сервером, спрашивать: "Есть чо ?" и закрывать сразу соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 07:49 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Cobalt747, Dimitry Sibiryakov дело говорит гарантированный способ определить жив коннект или нет - записать что-то в сокет если клиент не проявляет активности, ее нужно эмулировать - вводить в протокол сообщения ping и pong клиент с интервалом, который на 10-20% меньше таймаута чтения, шлет пинг (если здесь ошибка коннект точно сдох), сервер должен ответить pong, если все ок, то клиент примет это сообщение и не будет таймаута по чтению, если же таймаут превышен - либо проблемы с коннектом либо с сервером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 07:56 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
black-manateeЛучше, если клиент будет раз в X секунд открывать соединение с сервером, спрашивать: "Есть чо ?" и закрывать сразу соединение. менее эффективно, особенно, если tls, особенно если большой rtt, но применимо если команды "тяжелые" и времени на обработку надо в разы больше чем на установку соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 08:10 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Cobalt747Есть TCP-сервер Клиент подключается и ждет команд от него. иногда команды могут приходить очень редко. Соответственно, при дисконнекте, когда связь рвется физически, никакого отличия от ошибки по таймауту я не наблюдаю. И в списке портов это соединение также висит в статусе "Established" Что посоветуете? +1, стандартное решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 09:25 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovCobalt747Что посоветуете? Добавить в прикладной протокол PING-пакет, посылаемый при отсутствии другой активности в течении ХХ секунд. Это было бы хорошо, конечно. Но надо как-то выкрутиться в текущем положении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 11:10 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Cobalt747надо как-то выкрутиться в текущем положении. Из текущего положения выхода нет, обломись. Вышеназванный keep alive не поможет, поскольку по умолчанию watchdog пакеты начинают посылаться через два часа неактивности. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 11:33 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Cobalt747Есть TCP-сервер Клиент подключается и ждет команд от него. .... Что посоветуете? Посоветую не выворачивать архитектуру наизнанку, тогда не будут возникать связанные с этим проблемы. Клиент - это тот, кто посылает команды серверу, а не ждёт команд от сервера. Ну а в этой извратной схеме проще всего решить проблему, поставив таймер неактивности и при его срабатывании переустанавливая соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 11:48 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Очень часто "сервер" - не тот, кто ждет команды, а всего лишь тот, чей адрес в сети известен, а клиент - соответственно тот, кто инициирует подключение. Можно, конечно, выдумывать еще разную терминологию, но вот так принято. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 11:57 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
ёёёёёМожно, конечно, выдумывать еще разную терминологию, но вот так принято. Вот и не надо выдумывать новую терминологию. Сервер - это пассивная сторона, которая принимает соединение, ждёт команду, выполняет её и посылает ответ. Клиент - это активная сторона, которая устанавливает соединение, посылает команду и ждёт ответ. Для "чей адрес в сети известен" делают, например, сервер авторизации, умеющий выполнять две команды: "Я Вася, поднял сервер на адресе таком-то, все команды для него посылать туда" "Хочу связаться с Васей, скажи куда стучаться" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 12:01 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
softwarer, реальный мир - не всегда плоский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 12:10 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
ёёёёёsoftwarer, реальный мир - не всегда плоский. Да, конечно. Я ничуть не возражаю против права всех желающих кушать задницей и срать через рот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 12:19 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
softwarerСервер - это пассивная сторона, которая принимает соединение, ждёт команду, выполняет её и посылает ответ. Клиент - это активная сторона, которая устанавливает соединение, посылает команду и ждёт ответ. Instant Messenger-ы с тобой не согласны. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 12:42 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovInstant Messenger-ы с тобой не согласны. Really? Кстати, о каком конкретно ты говоришь? У разных довольно разные схемы работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 12:47 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
ёёёёёОчень часто "сервер" - не тот, кто ждет команды, а всего лишь тот, чей адрес в сети известен, а клиент - соответственно тот, кто инициирует подключение. +1 softwarerДля "чей адрес в сети известен" делают, например, сервер авторизации, умеющий выполнять две команды: "Я Вася, поднял сервер на адресе таком-то, все команды для него посылать туда" "Хочу связаться с Васей, скажи куда стучаться" Речь видимо про VPN? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 12:50 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
DmSerРечь видимо про VPN? Про очень много что, начиная от icq и кончая oracle tns listener. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 13:01 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
softwarerКстати, о каком конкретно ты говоришь? Jabber, ICQ. И, если уж на то пошло, Oracle Publisher-Subscriber Notification. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 13:18 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
softwarer Вот и не надо выдумывать новую терминологию . Сервер - это пассивная сторона, которая принимает соединение, ждёт команду, выполняет её и посылает ответ. Клиент - это активная сторона, которая устанавливает соединение, посылает команду и ждёт ответ. Сервер — тот, кто обслуживает запросы клиентов. Все. Что он там что-то ждет, выполняет, пассивный, активный — это и есть выдумки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 15:47 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Alibek B.Сервер — тот, кто обслуживает запросы клиентов. Все. Верно. А теперь, прежде чем говорить глупости, загляни в первое сообщение топика, подставь туда это определение и ощути разницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 15:50 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovJabber, ICQ. Как реализован Jabber я не в курсе. ICQ изначально был классическим клиент-сервером (то есть клиент стучался на icq.com и получал сообщения для себя), по мере роста нагрузки его доработали для поддержки прямых соединений по схеме, которую я привёл выше, где icq.com выполнял роль сервера авторизации. Dimitry SibiryakovИ, если уж на то пошло, Oracle Publisher-Subscriber Notification. Я не в курсе, что такое "Oracle Publsher-Subcriber Notification". Гугль при запросе по этой строчке говорит "Нет результатов". Вероятно, это продукт из твоего фантазийного мира, поэтому не удивлюсь, если он работает с помощью розовых пони. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 15:56 |
|
||
|
Отличить дисконнект от таймаута чтения
|
|||
|---|---|---|---|
|
#18+
softwarerзагляни в первое сообщение топика, подставь туда это определение и ощути разницу. Это что-то должно значить? Или в чем смысл этого заглядывания и какую разницу нужно ощутить? Не нужно ничего домысливать к базовому определению, тогда и не будет непониманий. Не нужно выдумывать про ожидание подключений и отправку ответов, это вообще выходит за рамки определения. На транспортном уровне сервер — это listen-сокет, который принимает соединения. На прикладном уровне сервер — это компонент, обслуживающий запросы. При этом на транспортном и прикладном уровне сервера могут не совпадать. Более того, на прикладном уровне хост может быть сервером и клиентом одновременно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39835387&tid=2039256]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 527ms |

| 0 / 0 |
