OpenSCADAWiki : Doc/Soсkets

Модуль подсистемы “Транспорты” <Soсkets>



Модуль:Sockets
Имя:Сокеты
Тип:Транспорт
Источник:tr_Sockets.so
Версия:1.2.1
Автор:Роман Савоченко
Описание:Предоставляет транспорт основанный на сокетах. Поддерживаются интернет и unix сокеты. Интернет сокет использует TCP и UDP протоколы.
Лицензия:GPL

Оглавление документа

Введение

Модуль транспорта Sockets предоставляет в систему поддержку транспортов основанных на сокетах. Поддерживаются входящие и исходящие транспорты, основанные на интернет сокетах: TCP, UDP и UNIX сокете. Добавить новые входящие и исходящие сокеты можно посредством конфигурации транспортной подсистемы в любом конфигураторе системы OpenSCADA. Кроме индивидуальных настроек транспортов, модуль предоставляет ещё три параметра общего назначения:
Все эти параметры можно установить в конфигурационном файле и поменять из любого стандартного конфигуратора системы OpenSCADA.

1 Входящие транспорты

Сконфигурированный и запущенный входящий транспорт открывает серверный сокет для ожидания соединения клиента. В случае с UNIX сокетом создаётся файл UNIX сокета. Сокеты TCP и UNIX являются много-поточными, т.е. при подключении клиента к сокетам данных типов создаётся клиентский сокет и новый поток, в котором производиться обслуживание клиента. Серверный сокет, в этот момент, переходит к ожиданию запросов от нового клиента. Таким образом достигается параллельное обслуживание клиентов.

Каждый входящий сокет обязательно связывается с одним из доступных транспортных протоколов, которому передаются входящие сообщения. В связке с транспортным протоколом поддерживается механизм объединения кусков раздробленных запросов.

Особенности формирования адресов входящих сокетов приведены в таблице ниже:
Тип сокетаАдрес
TCP
TCP:[адрес]:[порт]:[режим]
где:
  • адрес – Адрес на котором открывается сокет. Должен быть одним из адресов хоста. Если ничего не указано то сокет будет доступен на всех интерфейсах хоста. Допускаются как символьное так и IP представление адреса.
  • порт – Сетевой порт на котором открывается сокет. Возможно указание символьного имени порта (в соответствии с /etc/services).
  • режим – режим работы входящего сокета (0 – разрывать соединение после сеанса приём-ответ; 1 – не разрывать).
Пример: <TCP::10001:1> – TCP-сокет доступен на всех интерфейсах, открыт на порту 10001 и соединения не разрывает.
UDP
TCP:[адрес]:[порт]
где:
  • адрес – тоже что в TCP;
  • порт – тоже что в TCP.
Пример: <UDP:localhost:10001> – UDP-сокет доступен только на интерфейсе “localhost” и открыт на порту 10001.
UNIX
UNIX:[имя]:[режим]
где:
  • имя – имя файла UNIX сокета;
  • режим – тоже что в TCP.
Пример: <UNIX:/tmp/oscada:1> – UNIX-сокет доступен через файл /tmp/oscada и соединения не разрывает.

2 Исходящие транспорты

Сконфигурированный и запущенный исходящий транспорт открывает соединение с указанным сервером. Исходящие транспорты поддерживают восстановление соединения.

Адреса исходящих сокетов различного типа формируются следующим образом:
Тип сокетаАдрес
TCP/UDP
TCP:[адрес]:[порт]
UDP:[адрес]:[порт]
где:
  • адрес – Адрес с которым выполняется соединение. Допускаются как символьное так и IP представление адреса.
  • порт – Сетевой порт с которым выполняется соединение. Возможно указание символьного имени порта (в соответствии с /etc/services).
Пример: <TCP:127.0.0.1:7634> – соединится с портом 7634 на хосте 127.0.0.1.
UNIX
UNIX:[имя]
где:
  • имя – имя файла UNIX сокета.
Пример: <UNIX:/tmp/oscada> – соединится с UNIX-сокетом через файл /tmp/oscada.