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 

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

  • Sshd_config TPCKeepAlive по-прежнему использует незашифрованный канал и, следовательно, уязвим
  • Как читать строки с фиксированной скоростью?
  • Как «освободить» TCP-порт?
  • Как проверить, открыт ли брандмауэр для порта, но не прослушивается порт
  • nc -l в фоновом закрытии немедленно закрывается (nc -l 1234 &)
  • почему у меня так много открытых обработчиков сокетов и записей в Netgrat DGRAM?
  • Почему все наши соединения CLOSE_WAIT имеют 24 байта в очереди приема?
  • `cat / dev / ttyACM` теряет данные при передаче через netcat
  • 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 - лучшая ОС в мире.