Компонент
TSocketConnection
Компонент TSocketConnection обеспечивает соединение клиента с сервером приложений за счет использования сокетов TCP/IP. Для успешного открытия соединения на стороне сервера должен работать сокет-сервер (приложение ScktSrvr.exe, рис. 20.4).
Для успешного соединения свойство
property Host: String;
должно содержать имя компьютера сервера.
Рис. 20.4. Сокет-сервер ScktSrvr.exe
Дополнительно, свойство
property Address: String;
должно содержать IP-адрес сервера.
Для открытия соединения должны быть заданы оба этих свойства.
Свойство
property Port: Integer;
устанавливает номер используемого порта. По умолчанию это порт 211, но разработчик волен изменить порт, например, для использования различными категориями пользователей или для создания защищенного канала.
После правильного выбора компьютера в списке свойства
property ServerName: string;
в Инспекторе объектов появляется перечень доступных серверов Автоматизации. И после выбора сервера свойство
property ServerGUID: string;
которое содержит имя компьютера GUID зарегистрированного сервера, задается автоматически, хотя его можно задать и вручную.
Метод
function GetServerList: OleVariant; virtual;
возвращает список зарегистрированных серверов Автоматизации. Открытие и закрытие соединения осуществляется свойством
property Connected: Boolean;
или методами
procedure Open;
procedure Close;
соответственно.
Канал сокета TCP/IP может быть зашифрован. Для этого используется свойство
property InterceptName: string;
содержащее программный идентификатор объекта СОМ, обеспечивающего шифрование/дешифрование данных в канале, и свойство
property InterceptGUID: string;
содержащее имя компьютера GUID этого объекта.
Этот объект СОМ перехватывает данные в канале и осуществляет их обработку, предусмотренную собственным программным кодом. Это может быть шифрование, сжатие, обработка шумов и т. д.
Примечание
Создание объекта СОМ, обеспечивающего дополнительную обработку данных в канале, ложится на плечи разработчика. Объект-перехватчик должен поддерживать стандартный интерфейс IDataintercept.
Естественно, на стороне сервера должен быть зарегистрирован объект СОМ, выполняющий обратную операцию. Для этого также используется сокет-сервер (рис. 20.5). Строка Interceptor на странице должна содержать имя компьютера GUID объекта-перехватчика СОМ.
Рис. 20.5. Регистрация объекта-перехватчика СОМ в сокет-сервере
Метод
function GetlnterceptorList: OleVariant; virtual;
возвращает список зарегистрированных на сервере объектов-перехватчиков.
Для организации передачи данных между клиентом и сервером компонент TSocketConnection предоставляет интерфейс IAppServer
property AppServer: Variant;
который также может быть получен методом
function GetServer: lAppServer; override;
Свойство
property ObjectBroker: TCustomObjectBroker;
позволяет использовать экземпляр компонента TSimpieObjectBroker для получения списка доступных серверов во время выполнения (см. ниже).
Методы-обработчики событий компонента TSocketConnection полностью совпадают с методами-обработчиками компонента TDCOMConnection (см. табл. 20.1).