next up previous contents
Next: Визуализация данных системы сбора Up: UDP как средство мультидоступа Previous: Адресная передача точка -

Адресная передача точка - группа

Предлагается построить процедуру передачи, используя следующие свойства данных:

1.
Графические данные в основном однотипны, то есть набор дейтаграмм ограничен фиксированным числом заранее известных структур.
2.
Структуры графических данных привязаны к средствам их отображения с ограниченными полями, поэтому циклы вывода данных в реальном времени имеют периодический характер, связанный с заполнением экрана.
3.
Количество потребителей графических данных ограничено сравнительно небольшим числом рабочих станций, с которых производится управление наблюдательным процессом.
4.
Цена потерь графических данных в системе сбора невысока, поскольку средства визуального контроля вторичны по отношению к записи исходных данных на носители.

Предлагается следующий алгоритм взаимодействия между множеством клиентов и сервером. Этот алгоритм позволяет минимизировать поток дейтаграмм в сети и количество используемых сетевых ресурсов.

Основная идея алгоритма в том, что сервер открывает всего один UDP-сокет, но резервирует область для массива адресов фиксированного1.18 множества клиентов. Номер порта также один и известен клиентам вместе с адресом сервера. Клиенты при старте также открывают у себя по одному сокету.


  
Figure: Алгоритм работы сервера
\begin{figure}\centering
\hspace{1cm}\vbox{\psfig{figure=vsd.ps,width=13cm,height=10cm} }
\end{figure}

Рассмотрим работу сервера. Сервер после старта программы создает собственную копию в виде ``потомка", который отсоединяется от управляющего терминала и становится самостоятельным ``демоном", а ``родитель" свою работу завершает. После этого происходит открытие драйвера аппаратуры системы регистрации для приема ``шапочки" параметров и собственно потока данных для визуализации. ``Шапочка" запоминается в виде структуры данных для передачи в виде дейтаграммы, назовем ее 1. Затем открывается сокет для приема запросов и выдачи данных. После открытия сокета программа попадает в бесконечный цикл ожидания запросов из сети и чтения данных из драйвера.

Исходно массив адресов клиентов очищен. При получении дейтаграммы она анализируется на содержание, и если соответствует стартовой, то из сокета извлекается адрес первого клиента и заносится в первую свободную ячейку адресного массива. Затем этому клиенту посылается дейтаграмма ``шапочки" и начинается передача графических данных - дейтаграмм 2. Данные передаются по мере их поступления от аппаратуры сбора, при этом производятся также попытки чтения дейтаграмм запросов от других клиентов.

Поступление дейтаграммы ``Start" от клиента приводит к добавлению соответствующего адреса в массив адресов, передачи "шапочки" и включению этого клиента в цикл передачи дейтаграмм 2. Получение же сервером дейтаграммы ``Stop" вызывает процедуру обнуления соответствующего адреса клиента в массиве адресов и прекращению передачи данных для него. Поэтому дополнительной обязанностью клиентов является периодическое подтверждение собственной ``жизнеспособности" посылкой стартовых дейтаграмм. Эту процедуру логично связать с заполнением экрана клиента и его очисткой.

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

  
Figure: Алгоритм работы клиента
\begin{figure}\centering
\hspace{1cm}\vbox{\psfig{figure=cli.ps,width=13cm,height=10cm} }
\end{figure}

Алгоритм работы клиента изображен на рис. 1.5. Работа клиента начинается с процедуры инициализации графического экрана, при этом средствами X11 могут создаваться специальные окна, раскрашенные в соответствии с палитрой и ресурсами рабочей станции. Затем программа открывает дейтаграммный сокет и посылает запрос на прием ``шапочки" для оформления графических данных. Целесообразно организовать цикл таких запросов с выдержкой времени. (Обычно достаточно десятка секунд). После получения дейтаграммы 1 вызывается процедура графического оформления данных в виде рамочек, атрибутов, шкал, сетки времени и т.п. Затем программа попадает в цикл ожидания дейтаграмм 2 и разрисовки отсчетов по полученным данным в реальном времени. По мере заполнения экрана, а также при выбранном тайм-ауте1.19 на прием данных, программа посылает стартовый запрос на прием дейтаграмм 1 и перерисовывает оформление экрана. Такие циклы повторяются до тех пор, пока работу программы не прервет событие (или сигнал) на ее окончание. Перед выходом из программы и закрытием сокета производится посылка дейтаграммы "Stop" серверу.


Vladimir Chernenkov
2000-10-09