Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Продолжительное или разовое соединение 
:(
    Опции темы
Dmitry_177
Дата 25.5.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Подскажите пожалуйста, есть сервер, есть клиент, клиент запрашивает у сервера какую-то определенную информацию, а сервер отвечает ему, и так много раз, сколько это будет запрашивать пользователь.. У меня это сделано все в одном TCP соединении, т.е. сервер постоянно в ожидании новых запросов от клиента(это и часами может быть, т.е. пока клиентская часть работает).. А потом при закрытии клиентской части, он шлет серверу специальное сообщение чтобы сервер закрыл свой сокет, созданный для клиента и клиент закрывает сокет.. Подскажите пожалуйста может лучше сделать так: при каждом запросе клиента у сервера, устанавливать заново соединение, а по завершению выполнения запроса, т.е. когда сервер уже ответил клиенту на его запрос, рвать это соединение, и так каждый раз при новом запросе?

Мне еще интересно вот к примеру браузеры не так ли делают? Т.е. открывают запрошенную html-страницу в интернете и рвут соединение с сервером, а при переходе по ссылке на какую-то другую страницу заново браузер соединяется с сервером и т.д.?
PM MAIL   Вверх
_hunter
Дата 25.5.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 5
Всего: 98



Браузеры делают запрос, получают страницу и рвут соединение. легко посмотреть любым (нормальным) файрволом.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Snowy
Дата 25.5.2007, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Не факт. Это протокол 1.0, а 1.1 держит соединение некоторое время.
Если проходит определённый таймаут бездействия, то соединение разрывается.
PM MAIL   Вверх
drkot
Дата 25.5.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 0
Всего: 8



Цитата(Dmitry_177 @  25.5.2007,  12:18 Найти цитируемый пост)
Подскажите пожалуйста может лучше сделать так

а в чем собственно вопрос?
можно и так и так от твоего желания и немного от специфики задачи

Цитата(Snowy @  25.5.2007,  12:58 Найти цитируемый пост)
Это протокол 1.0, а 1.1

1.0 тоже соединение не рвет если его попросить. 
имхо: отличия 1.0 и 1.1 в возможности использования инструкции connect при соединении через прокси.


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Dmitry_177
Дата 25.5.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Я это спрашиваю как вообще лучше делать, ведь я и так и так могу реализовать.. Но: я конечно понимаю что если постоянно будет связь то время обработки запроса будет быстрее, но и при этом ИМХО больше ресурсов тратится, да еще к тому же нужно постоянно проверять на связи ли клиент, если нет то сервер должен закрыть сокет да и DOS атаки тоже возможны..=) А при каждом запросе если соединяться, а потом разъединяться, ИМХО лучше, т.к. никаких проверок ненужно и по надежней будет такая схема..

Добавлено через 2 минуты и 22 секунды
Вы можете еще сказать то что смотря с какой периодичностью будет клиент посылать такие запросы, если раз в час то и смысле нету постоянно держать соединение.. Вы знаете, это все будет зависеть от пользователя, как он будет с программой работать..
PM MAIL   Вверх
drkot
Дата 25.5.2007, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 0
Всего: 8



ИМХО смысл такой:
  если связь "односторонняя" (клиетн управляет сервером, веб, почта) то приемлемо эпизодическое соединение.
 если связь "двусторонняя" (ICQ, skype) то однозначно нужно постоянное соединение.

Цитата(Dmitry_177 @  25.5.2007,  17:28 Найти цитируемый пост)
нужно постоянно проверять на связи ли клиент

как таковых способов проверки нет. этот механизм реализован на уровне протокола и степеней свободы там не много.




--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Dmitry_177
Дата 26.5.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



Можно посылать контрольный пакет, на который обратная сторона должна ответить.. =)
PM MAIL   Вверх
drkot
Дата 26.5.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ищущий
***


Профиль
Группа: Завсегдатай
Сообщений: 1042
Регистрация: 5.5.2006

Репутация: 0
Всего: 8



Цитата(Dmitry_177 @  26.5.2007,  12:59 Найти цитируемый пост)
Можно посылать контрольный пакет

Каков механизм контроля?


--------------------
Ошибка не становится истиной по причине широкого распространения,
как и Истина не становится Ошибкой из-за того, что никто её не видит.
PM   Вверх
Dmitry_177
Дата 26.5.2007, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 22.9.2006

Репутация: нет
Всего: нет



через определенное время каждый раз посылается определенный пакет, на который обратная сторона должна немедленно ответить.. если небыло ответа то выключаем соединение..

можно еще и так: клиент каждые допустим 5 мин шлет определенный пакет, это и означает "я еще на связи".. если время вышло и от клиента не пришел очередной пакет, то закрываем соединение..

можно еще что-нибудь придумать..

ксати у меня книга есть: "эффективное использование TCP", как-то так вобщем называется, там разобран этот случай и многого другого интересного есть.. если кто хочет могу прислать  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.