Есть взаимодействие организованое по вот такой схеме на линуксе:
"Program A" -> named pipe -> "Program B"
"Program A" записывает буфер проивзольного размеры который начинается с размера данных (flatbuffer). Разделителей или контрольной суммы нет, но все работает отлично при взаимодействии через именованные каналы, т.к. если никто не читает, то в named pipe ничего и не пишется, явной синхронизации не требуется.
В тестовых целях необходимо получать эти же данные на другой машине. Сделал вот так:
"Program A" -> named pipe -> netcat -> TCP/IP -> netcat -> named pipe -> "Program B"
Данные доезжают, но проблема в том, что они теперь никак не синхронизированны и начало буфера не поймать. Есть ли какая-то netcat/socat магия для синхронизации клиента и сервера? Или нужно что-то типа ZeroMQ?
Здравствуйте, Skorodum, Вы писали:
S>Данные доезжают, но проблема в том, что они теперь никак не синхронизированны и начало буфера не поймать. Есть ли какая-то netcat/socat магия для синхронизации клиента и сервера? Или нужно что-то типа ZeroMQ?
А зачем named pipe ?
почему не просто "ProgramA | nc" и "nc | ProgramB"
И вам никто не мешает стартовать "ProgramA | nc" через ssh удалённо или перезапускать если надо.
| Можно еще интерактива добавить |
| #!/bin/sh
SESSION="test"
tmux kill-session -t $SESSION
tmux new-session -d -s $SESSION
tmux split-window -v -t $SESSION
tmux split-window -h -t $SESSION:0.0
tmux split-window -h -t $SESSION:0.2
tmux send-keys -t $SESSION:0.0 'ssh worker1' C-m
tmux send-keys -t $SESSION:0.1 'ssh worker2' C-m
tmux send-keys -t $SESSION:0.2 'ssh worker3' C-m
tmux send-keys -t $SESSION:0.3 'tmux kill-session -t ' $SESSION
tmux attach-session -t $SESSION
|
| |
Здравствуйте, kov_serg, Вы писали:
_>А зачем named pipe ?
_>почему не просто "ProgramA | nc" и "nc | ProgramB"
"Program A" записывает буфер проивзольного размеры который начинается с размера данных (flatbuffer). Разделителей или контрольной суммы нет, но все работает отлично при взаимодействии через именованные каналы, т.к. если никто не читает, то в named pipe ничего и не пишется, явной синхронизации не требуется.
Со стандартным выводом это не будет работаеть.