Вверх ↑
Ответов: 4621
Рейтинг: 746
#1: 2017-03-13 14:08:46 ЛС | профиль | цитата
Компоненты PipeClient и PipeServer

Обмен данными между приложениями через именованные каналы.

Версия от 27.03.2017


СКАЧАТЬ



Компоненты построены по тому же принципу, что и мои TCP клиент и сервер. По своему назначению аналогичны DDEClient/DDEServer или MailSlot_Client/MailSlot_Server.

Пока что не реализована асинхронная отправка данных.

Перечень точек и свойств

PipeClient

- Свойства:

PipeName=Имя pipe (канала) для открытия
Mode=Режим открытия канала. Read - клиент может только читать данные, сервер - писать. Write - наоборот. ReadWrite - и клиент и сервер могут читать и писать данные. Чтение данных не запускается в режиме Write
AsyncEvents=Асинхронная выдача событий (из пераллельных потоков, когда применимо). Если наблюдаются проблемы в обработке - используйте компонент Synchronize на выходе либо выключите.
SendTimeout=Таймаут отправки данных в миллисекундах. Если сервер не примет данные в течении этого времени, произойдет событие onErrorSend с кодом 258. Если 0 - не ограничивать. Метод doSend не возвратит управление, пока клиент не примет данные или не истечет таймаут.
ConnectTimeout=Таймаут подключения в миллисекундах. Если канал существует, но в течении этого времени сервер не успеет принять входящее подключение, произойдет событие onErrorConnect с кодом 231.
ReadBufSize=Размер буфера чтения. Данные событием onReceive будут выдаваться порциями не большими, чем это значение, и не больше, чем WriteBufSize сервера.
WriteBufSize=Размер буфера записи. Данные отправляются порциями указанного размера. Сервер будет принимать данные фрагментами не большими, чем это значение

- Методы:
doSend=Отправить данные Data на сервер. Повторная отправка данных невозможна до появления события onSend/onSendError
doConnect=Подключиться к каналу PipeName
doDisconnect=Отключиться от сервера
*doAbortSend=Прервать отправку данных (вызвать этот метод можно только из параллельного потока)

- События:
onReceive=Происходит при получении данных от сервера
onSend=Происходит по завершению отправки данных методом doSend
onConnect=Происходит при успешном подключении к каналу методом doConnect
onDisconnect=Происходит при разрыве соединения сервером или ошибках, при которых дальнейшая работа с текущим подключением невозможна
*onErrorConnect=Происходит при ошибке подключения методом doConnect. Выдаёт в поток код ошибки
*onErrorSend=Происходит при ошибке отправки данных. Выдаёт в поток код ошибки


PipeServer

- Свойства:

Те же, что и у клиента, кроме ConnectTimeout

- Методы:
doSend=Отправить данные Data клиенту ClientID
doStartServer=Создать канал (pipe) с именем PipeName и запустить ожидание подключений
doStopServer=Остановить сервер и отключить всех клиентов
doClose=Разорвать указанное соединение
*doAbortSend=Прерывает отправку данных указанному клиенту
*doAbortSendAll=Прерывает отправку данных всем клиентам
*doCloseAll=Разрывает соединение со всеми клиентами без остановки сервера
*doEnumClients=Перебирает все текущие соединения и выдает их идентификаторы на onEnumClients
*doSendAll=Отослать данные всем клиентам
*doStopListening=Остановить приём новых подключений без отключения текущих клиентов

- События:
onReceive=Происходит при получении данных от клиента и выдаёт в поток полученные данные
onClientConnect=Событие происходит при подключении нового клиента. После этого канал с тем же именем будет пересоздан и продолжится ожидание нового подключения. В поток выдаёт идентификатор нового клиента
onClientDisconnect=Событие происходит при отключении клиента. Возможно только в режимах Read/ReadWrite в процессе приема данных. В поток выдаёт идентификатор клиента
*onSend=Событие происходит после завершения передачи данных методами отправки данных. Выдает в поток идентификатор клиента
*onStartServer=Событие происходит после успешного создания первой pipe после вызова doStartServer
*onEnumClients=Происходит в процессе перебора клиентов по doEnumClients и выдает в поток идентификатор
*onErrorStart=Событие происходит при ошибке создания pipe и выдаёт в поток код ошибки. Теоретически, может произойти после успешного приёма нескольких подключений. Приём новых подключений будет остановлен.
*onErrorSend=Событие происходит при ошибках отправки данных и выдаёт в поток код ошибки

карма: 26

7
Голосовали:flint2, Nickname, halt, Konst, miver, Gunnman, Gunta
Редактировалось 12 раз(а), последний 2017-05-26 15:56:21