socat duplicate stdin для каждого подключенного клиента

ncat (из nmap folk) имеет аккуратное действие по умолчанию для дублирования любого ввода для всех подключенных клиентов. Например:

Запустите сервер на терминале 1:

% mkfifo messages % exec 8<>messages # hold the fifo open % ncat -l 5555 -k --send-only < messages 

Запуск клиентов, прослушивающих терминалы 2 и 3:

 % nc localhost 5555 

Выведите что-то на fifo на терминале 4 и наблюдайте, как одно сообщение появляется на всех подключенных клиентах (терминалы 2 и 3):

 % printf 'Hello, clients.\n' > messages 

Возможно ли такое совпадение с сотатом?

  • Как узнать имя процесса, которое открывает порт tcp?
  • Проблемы с nmap-сканированием с использованием прокси-сервера ssh с proxychains
  • Поиск локальных процессов, запускающих TCP-соединения
  • Определение того, какой процесс связан с портом
  • Захват данных с Fluke 1620a через netcat
  • Как использовать lsof для идентификации входящих TCP-соединений?
  • Отбросить пакеты TCP и предотвратить повторную передачу TCP
  • Как контролировать скорость загрузки в браузере?
  • One Solution collect form web for “socat duplicate stdin для каждого подключенного клиента”

    Я боюсь, что вы хотите сделать, это невозможно. Самое близкое, что вы можете получить, это:

    На клемме 1:

     mkfifo messages socat PIPE:messages TCP4-LISTEN:5555,fork 

    На клеммах 2 и 3:

     nc localhost 5555 

    Затем текст, отправляемый на messages , иногда появляется на терминале 2, а иногда и на терминале 3. Это связано с тем, что socat будет «потреблять» текст в messages прежде чем сделать их доступными через сокет, открытый на localhost: 5555. Затем первый процесс netcat чтобы проснуться и прочитать из сокета, получит сообщения, а другой ничего не получит.

    Linux и Unix - лучшая ОС в мире.