powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отличить дисконнект от таймаута чтения
25 сообщений из 31, страница 1 из 2
Отличить дисконнект от таймаута чтения
    #39835236
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть TCP-сервер
Клиент подключается и ждет команд от него.

иногда команды могут приходить очень редко.
Соответственно, при дисконнекте, когда связь рвется физически, никакого отличия от ошибки по таймауту я не наблюдаю.
И в списке портов это соединение также висит в статусе "Established"

Что посоветуете?
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835266
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Что посоветуете?

Добавить в прикладной протокол PING-пакет, посылаемый при отсутствии другой активности в
течении ХХ секунд.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835275
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может и таймаутом поиграть. Пинг-то он всеяден пр портам...

А дисконнект это что? Пьяный тракторист кабло распахал? Лавина/наводнение/миру кирдых?
При отдыхе, сервак по идее должен команду разослать типа BYE, "ушла на базу", "спать ложусь до NN:mm" ...
А кто прочухал, тот сам себе злобный клиентурко
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835286
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835293
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorА может и таймаутом поиграть. Пинг-то он всеяден пр портам...
herfkbwj
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835295
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747Есть TCP-сервер
Клиент подключается и ждет команд от него.

Что-то тут не так. Обычно клиент посылает команды серверу.

Речь идет про Indy ? Клиент устанавливает соединение с сервером и висит, ждет команды ?

Лучше, если клиент будет раз в X секунд открывать соединение с сервером, спрашивать: "Есть чо ?" и закрывать сразу соединение.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835296
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747,

Dimitry Sibiryakov дело говорит

гарантированный способ определить жив коннект или нет - записать что-то в сокет
если клиент не проявляет активности, ее нужно эмулировать - вводить в протокол сообщения ping и pong
клиент с интервалом, который на 10-20% меньше таймаута чтения, шлет пинг (если здесь ошибка коннект точно сдох), сервер должен ответить pong, если все ок, то клиент примет это сообщение и не будет таймаута по чтению, если же таймаут превышен - либо проблемы с коннектом либо с сервером
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835298
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
black-manateeЛучше, если клиент будет раз в X секунд открывать соединение с сервером, спрашивать: "Есть чо ?" и закрывать сразу соединение.
менее эффективно, особенно, если tls, особенно если большой rtt, но применимо если команды "тяжелые" и времени на обработку надо в разы больше чем на установку соединения.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835316
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Есть TCP-сервер
Клиент подключается и ждет команд от него.

иногда команды могут приходить очень редко.
Соответственно, при дисконнекте, когда связь рвется физически, никакого отличия от ошибки по таймауту я не наблюдаю.
И в списке портов это соединение также висит в статусе "Established"

Что посоветуете? +1, стандартное решение
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835358
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovCobalt747Что посоветуете?

Добавить в прикладной протокол PING-пакет, посылаемый при отсутствии другой активности в
течении ХХ секунд.
Это было бы хорошо, конечно.
Но надо как-то выкрутиться в текущем положении.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835367
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747надо как-то выкрутиться в текущем положении.

Из текущего положения выхода нет, обломись. Вышеназванный keep alive не поможет, поскольку
по умолчанию watchdog пакеты начинают посылаться через два часа неактивности.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835378
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Есть TCP-сервер
Клиент подключается и ждет команд от него.

....

Что посоветуете?
Посоветую не выворачивать архитектуру наизнанку, тогда не будут возникать связанные с этим проблемы. Клиент - это тот, кто посылает команды серверу, а не ждёт команд от сервера.

Ну а в этой извратной схеме проще всего решить проблему, поставив таймер неактивности и при его срабатывании переустанавливая соединение.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835385
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень часто "сервер" - не тот, кто ждет команды, а всего лишь тот, чей адрес в сети известен, а клиент - соответственно тот, кто инициирует подключение.
Можно, конечно, выдумывать еще разную терминологию, но вот так принято.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835387
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёМожно, конечно, выдумывать еще разную терминологию, но вот так принято.
Вот и не надо выдумывать новую терминологию. Сервер - это пассивная сторона, которая принимает соединение, ждёт команду, выполняет её и посылает ответ. Клиент - это активная сторона, которая устанавливает соединение, посылает команду и ждёт ответ.

Для "чей адрес в сети известен" делают, например, сервер авторизации, умеющий выполнять две команды:

"Я Вася, поднял сервер на адресе таком-то, все команды для него посылать туда"

"Хочу связаться с Васей, скажи куда стучаться"
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835391
ёёёёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

реальный мир - не всегда плоский.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835394
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёsoftwarer,

реальный мир - не всегда плоский.
Да, конечно. Я ничуть не возражаю против права всех желающих кушать задницей и срать через рот.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835404
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerСервер - это пассивная сторона, которая принимает соединение, ждёт команду, выполняет её и
посылает ответ. Клиент - это активная сторона, которая устанавливает соединение, посылает
команду и ждёт ответ.

Instant Messenger-ы с тобой не согласны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835406
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInstant Messenger-ы с тобой не согласны.
Really? Кстати, о каком конкретно ты говоришь? У разных довольно разные схемы работы.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835408
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ёёёёёОчень часто "сервер" - не тот, кто ждет команды, а всего лишь тот, чей адрес в сети известен, а клиент - соответственно тот, кто инициирует подключение.

+1

softwarerДля "чей адрес в сети известен" делают, например, сервер авторизации, умеющий выполнять две команды:

"Я Вася, поднял сервер на адресе таком-то, все команды для него посылать туда"
"Хочу связаться с Васей, скажи куда стучаться"

Речь видимо про VPN?
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835418
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSerРечь видимо про VPN?
Про очень много что, начиная от icq и кончая oracle tns listener.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835439
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerКстати, о каком конкретно ты говоришь?

Jabber, ICQ.

И, если уж на то пошло, Oracle Publisher-Subscriber Notification.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835529
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Вот и не надо выдумывать новую терминологию . Сервер - это пассивная сторона, которая принимает соединение, ждёт команду, выполняет её и посылает ответ. Клиент - это активная сторона, которая устанавливает соединение, посылает команду и ждёт ответ.
Сервер — тот, кто обслуживает запросы клиентов. Все.
Что он там что-то ждет, выполняет, пассивный, активный — это и есть выдумки.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835533
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Сервер — тот, кто обслуживает запросы клиентов. Все.
Верно. А теперь, прежде чем говорить глупости, загляни в первое сообщение топика, подставь туда это определение и ощути разницу.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835538
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovJabber, ICQ.
Как реализован Jabber я не в курсе. ICQ изначально был классическим клиент-сервером (то есть клиент стучался на icq.com и получал сообщения для себя), по мере роста нагрузки его доработали для поддержки прямых соединений по схеме, которую я привёл выше, где icq.com выполнял роль сервера авторизации.

Dimitry SibiryakovИ, если уж на то пошло, Oracle Publisher-Subscriber Notification.
Я не в курсе, что такое "Oracle Publsher-Subcriber Notification". Гугль при запросе по этой строчке говорит "Нет результатов". Вероятно, это продукт из твоего фантазийного мира, поэтому не удивлюсь, если он работает с помощью розовых пони.
...
Рейтинг: 0 / 0
Отличить дисконнект от таймаута чтения
    #39835542
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerзагляни в первое сообщение топика, подставь туда это определение и ощути разницу.
Это что-то должно значить? Или в чем смысл этого заглядывания и какую разницу нужно ощутить?
Не нужно ничего домысливать к базовому определению, тогда и не будет непониманий.
Не нужно выдумывать про ожидание подключений и отправку ответов, это вообще выходит за рамки определения.
На транспортном уровне сервер — это listen-сокет, который принимает соединения. На прикладном уровне сервер — это компонент, обслуживающий запросы. При этом на транспортном и прикладном уровне сервера могут не совпадать. Более того, на прикладном уровне хост может быть сервером и клиентом одновременно.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отличить дисконнект от таймаута чтения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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