powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Client-Server
11 сообщений из 11, страница 1 из 1
Client-Server
    #39467552
Помогите разобраться в азах. Не понимаю - как должно быть.

Вариант 1.
Клиент подключается к серверу - создаётся сокет.
Клиент отсылает запрос на сервер.
Сервер возвращает код выполнения.
Если код успешный - клиент читает responce от сервера (набор некой информации).
Клиент периодически, с заданным интервалом (каким???) опрашивает сервер, на наличие новой информации для него.

Вариант 2.
Клиент подключается к серверу - создаётся сокет.
Создаётся отдельный поток для чтения на клиенте.
Клиент отсылает запрос в основном потоке на сервер.
В основном потоке клиент читает вернувшийся код выполнения.
В читающем потоке приходит responce.
Если серверу надо что-то отослать клиенту - он просто отсылает (сокет открыт - всё ок).
На клиенте читающий поток должен разобраться сам, что ему пришло, ответ на запрос, или информация от сервера.
Клиент не опрашивает сервер.

Как правильно?
...
Рейтинг: 0 / 0
Client-Server
    #39467579
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Термин "сокет" в данном случае явно не по делу. Вместо него лучше использовать термин "канал передачи данных", который состоит из 2 сокетов (один на клиенте и один на сервере) и коммуникаций между ними.

Во втором варианте Вы вообще свалили всё в одну кучу. При чём тут потоки? какая разница, как реализована программная обработка на клиенте?

И я не понимаю, какой тип обмена Вы рассматриваете. Пассивный? push? активный?
...
Рейтинг: 0 / 0
Client-Server
    #39467596
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снова в школуКак правильно?
Как надо так и правильно.

Если сервер должен по собственной инициативе что-то отправлять клиенту, то клиент устанавливает постоянное соединение, а сервер просто пишет в него тогда когда появляется что писать.
...
Рейтинг: 0 / 0
Client-Server
    #39467603
Я не знаю какие типы обмена бывают.
Тут - та самая история, когда я не знаю, чего я не знаю.
Пожалуйста посоветуйте где посмотреть. Сейчас пороюсь сам.

Про "канал передачи данных" вы конечно правы.
Честно говоря, я вообще смутно пока представляю, как мне решать задачу.

У меня есть устройства, которые надо периодически опрашивать и информацию по ним отсылать на клиенты.
Клиент - обычная виндовая прога (скорее всего на C Builder - Delphi)
Скорее всего, как-то так. Пытаюсь подступиться к задаче хоть с какой-то стороны.

Отсюда туплю - клиент всегда должен слушать сервер и работать по событию от сервера, или опрашивать?
Опыта написания ни сервера, ни клиента, ни протокола обмена нет вообще.

Тыкните хотя бы куда посмотреть. По крохам собираю информацию откуда могу.

Спасибо
...
Рейтинг: 0 / 0
Client-Server
    #39467630
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снова в школуУ меня есть устройства, которые надо периодически опрашивать и информацию по ним отсылать на клиенты.
Разделите задачу на независимые части.

Первая - это работа сервера с устройствами. Сервер в данном случае выполняет роль клиента, а устройство - роль сервера. Т.е. сервер создаёт клиентский сокет и обращается к устройству. Получив запрос, устройство формирует серверный сокет. Образуется канал передачи данных, по которому устройство отсылает на сервер необходимые данные и получает от сервера команды. По завершении сеанса канал разрывается по инициативе одной из сторон, а сокеты расформируются. Сервер накапливает полученные от приборов данные.

Вторая - это работа сервера с клиентами. Тут возможны три варианта.

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

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

Третий - активная технология. используются два подключения. Клиент подключается к серверу и по установленному каналу передаёт данные для обратного подключения и команды. Сервер по переданным параметрам устанавливает обратное соединение с клиентом и по нему передаёт данные и ответы на команды.
...
Рейтинг: 0 / 0
Client-Server
    #39467656
Akina - спасибо большое.

Стало намного понятней.
...
Рейтинг: 0 / 0
Client-Server
    #39467684
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снова в школуУ меня есть устройства, которые надо периодически опрашивать и информацию по ним отсылать на клиенты.
Клиент - обычная виндовая прога (скорее всего на C Builder - Delphi)
Скорее всего, как-то так. Пытаюсь подступиться к задаче хоть с какой-то стороны.
ИМХО тут тебе надо использовать какую-нибудь *MQ ( очередь сообщений ).

Как вариант ZeroMQ . Облегченный вариант, для твоей задачи вполне хватит. Бесплатная библиотека в виде DLL, куда спрятана вся транспортная часть (сокеты, установка и поддержание соединений и т.д.).
Если на дельфях писать будешь, то в форуме по дельфям документацию переводили и примеры под делфи .
...
Рейтинг: 0 / 0
Client-Server
    #39467690
Dima T,
Спасибо большое.
Буду разбираться.
...
Рейтинг: 0 / 0
Client-Server
    #39467787
Dadont
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напиши бота для телеграмма. Он будет отсылать сообщения в группу клиентов. Дешево и сердито.
...
Рейтинг: 0 / 0
Client-Server
    #39467875
Minatavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, которые разрабатывают WAMP , разместили на своем сайте сравнительную таблицу разных протоколов.


Снова в школуКлиент отсылает запрос на сервер.
Сервер возвращает код выполнения.
Если код успешный - клиент читает responce от сервера (набор некой информации).

В их терминологии эта возможность называется RPC (Remote Procedure Calls)

Снова в школуКлиент периодически, с заданным интервалом (каким???) опрашивает сервер, на наличие новой информации для него.

А для этого придумали PubSub (Publish & Subscribe)

Снова в школуЕсли серверу надо что-то отослать клиенту - он просто отсылает (сокет открыт - всё ок).
На клиенте читающий поток должен разобраться сам, что ему пришло, ответ на запрос, или информация от сервера.

По-моему, именно это и надо правильно разделить между RPC и PubSub, чтобы клиенту не приходилось "разбираться самому, что же пришло".
...
Рейтинг: 0 / 0
Client-Server
    #39467881
Minatavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MinatavrВ их терминологии...
А для этого придумали...

Я имел в виду устоявшуюся терминологию. Как-то так сформулировалось, как-будто ее WAMP-цы придумали.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Client-Server
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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