![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
данные от сервера INDY всем клиентам INDY
Sergio77 © (2006-05-05 01:31:00)Подскажите пожклуйста, как это сделать?
Eraser (2006-05-05 18:27:00) [21]
> Sergio77 (05.05.06 17:58) [11]
> и потом если информация необходима сразу по ее обновленни,
> то либо клиенту нужно постоянно опрашивать сервер (и так
> нескольким или нескольким десяткам клиентов) и это в свою
> очередь будет нагружать сеть и сервер
а, по-вашему, ICQ не оправшивает сервер постоянно? и с чего это будет нагружать сеть, если в качестве опроса можно отсылать только 1 байт к примеру?
> а если она обновилась только через сутки, и сеть загружена
> другой работой, то рациональнее не опрашивать каждый раз
> серве а подождать, когда он сам скажет..
кому ждать ответ, это тебе виднее, ведущей стороной может быть как клиент так и сервер. Единственное отличие клиента от сервера в том, что сервер не умеет инициировать соединения, а клиент, в свою очередь, принимать.
Плохиш (2006-05-05 18:16:00) [22]
> и потом если информация необходима сразу по ее обновленни,
> то либо клиенту нужно постоянно опрашивать сервер (и так
> нескольким или нескольким десяткам клиентов) и это в свою
> очередь будет нагружать сеть и сервер (насколько сильно
> - другой разговор), либо сервер сам скажет что информация
> обновилась...
Если сервер сам говорит что-то клиенту, то они в этот момент меняются ролями. Т.е. это означает, что в клиенте должна быть реализована функциональность сервера. Открываем пример из поставки делфи NetChat и что мы там видим? На форме лежат компоненты TcpClient1 и TcpServer1. Вот и ответ на твой вопрос.
Sergio77 (2006-05-05 17:58:00) [23]вообще говоря, если знаете как помочь - скажите...
Sergio77 (2006-05-05 17:58:00) [24]
> при этом, у сервера со всеми клиентами уже установлено соединение,
> инициированое именно клиентами.
да, для начала, ну а потом происходит так как мне нужно, но с indy у меня не получается..
и потом если информация необходима сразу по ее обновленни, то либо клиенту нужно постоянно опрашивать сервер (и так нескольким или нескольким десяткам клиентов) и это в свою очередь будет нагружать сеть и сервер (насколько сильно - другой разговор), либо сервер сам скажет что информация обновилась...
а если она обновилась только через сутки, и сеть загружена другой работой, то рациональнее не опрашивать каждый раз серве а подождать, когда он сам скажет..
предсатвьте себе ситуацию, когда вы звоните в магазин и спрашиваете - появилась ли нужная вам вещь....и так сотня клиентов...
скорее всего продавец отключит телефон или скажет что перезвонит сам, как только появится то что вам нужно...
не совсем удачный пример, т.к. это про человек - а то все-таки компьютер - нервы у него крепче...
но рациональность аналогичная..
Eraser (2006-05-05 17:46:00) [25]
> Sergio77 (05.05.06 17:33) [9]
> один из клиентов отсылает сообщение серверу, а сервер в
> свою очередь отсылает по всем остальным клиентам, правильно?
>
при этом, у сервера со всеми клиентами уже установлено соединение, инициированое именно клиентами.
Sergio77 (2006-05-05 17:33:00) [26]пример простого сетвого чата с архитектурой клиент-сервер работает так:
один из клиентов отсылает сообщение серверу, а сервер в свою очередь отсылает по всем остальным клиентам, правильно?
p.s. и клиенты (остальные) не знают когда к ним прийдет сообщение...
так почему бы мне не сделать следущее:
при определенных изменениях на сервере (например обновилась информация о чем-то там...) сервер сам не дожидаясь запросов от клиентов рассылает им эту информацию, чтоб клиенты лишний раз ее не запрашивали... например информация важна и обязательна для клиентов..
вот поэтому и спрашиваю...
а принятые нормы о тех которых вы говорите - это ведь не запрет, правильно?
Плохиш (2006-05-05 17:15:00) [27]
> Sergio77 (05.05.06 17:09) [7]
> пошутил...
Нет, всё серьёзно. Сервер преднозначен для того что бы отвечать на запросы клиентов, а не пытаться сунуть клиенту какую-то информацию по своему желанию, к тому совершенно не нужную клиенту. Или у Вас другие представления о работе сервера.
Sergio77 (2006-05-05 17:09:00) [28]пошутил...
Плохиш (2006-05-05 16:52:00) [29]
> данные от сервера INDY всем клиентам INDY
Держитесь от этого сервера подальше, он больной. Бегает за всеми клиентами, какие-то данные всучить пытается.
Slym (2006-05-05 16:18:00) [30]Sergio77 (05.05.06 14:45) [4]
нужно создать поток для клиента чтобы прослушивать данные?
За тебя Indy уже создала
Sergio77 (2006-05-05 14:45:00) [31]
> событий и не увидишь, Indy работает только с блокирующими
> сокетами.
т.е. нужно создать поток для клиента чтобы прослушивать данные?
Eraser (2006-05-05 14:14:00) [32]
> Sergio77 (05.05.06 12:14) [2]
> и кстати, как принять данные у клиента
i := idTCPClient.IOHandler.ReadInteger;
> не вижу там событий таких
событий и не увидишь, Indy работает только с блокирующими сокетами.
Sergio77 (2006-05-05 12:14:00) [33]не могу найти свойство clients
и кстати, как принять данные у клиента, не вижу там событий таких..??
indy 10.0.20
Slym (2006-05-05 09:23:00) [34]For i:=0 to Clients.Count-1 do
Clients.Items[i].Send('');