Утилита DEMO_PIPE

Эта утилита иллюстрирует функции терминальной связи по каналу.

В начале открывается несколько тестовых окон:

  r:=eval('@async @term -c  pipe .\test');
  r:=eval('@async @term -ca task ping /t localhost');
  r:=eval('@async @term -c  tcp port 1234 client localhost');
  r:=eval('@async @term -cx tcp port 1234 client '+ParamStr('ComputerName'));
  

Первое окно - клиент именованного канала test на локальной машине.
Второе окно - консольная задача, которая для примера просто постоянно пингует компьютер.
3 и 4 окно - два клиента канала TCP порта 1234, причем 4 окно отображает данные в HEX формате.

Потом создается три канала:

  TaskPipe:=pipe_init('task '+GetComSpec);
  PipePipe:=pipe_init('pipe test');
  TcpPipe :=pipe_init('tcp  port 1234 server 3');
  


Первый запускает командный процессор (с переназначением ввода-вывода в канал, разумеется).
Второй создает сервер именованного канала test.
Третий создает сервер TCP порта 1234 на три клиента.

Далее, если пользователь вводит в консоли Daq программы строку, она передается во все каналы. Поскольку в программе запускаются серверы, а в терминальных окнах клиенты, то в результате введенная строка должна появиться во всех клиентских окнах. Ее получит также и командный процессор, выполняя введенные команды. Если, например, ввести команду dir, то в результате в консольном окне появится содержимое каталога.

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