Назад | Перейти на главную страницу

Как писать и читать из одного файла, используя два netcats?

Я хотел бы использовать файл в качестве временного буфера для подключения двух процессов netcat. Мне нужно использовать буфер, потому что данные отправляются и запрашиваются на каждом конце с разными интервалами. Я хочу использовать файл вместо фактического mkfifo буфер, потому что данные часто превышают 64 КБ.

Это то, что у меня есть, но не работает. Файл никогда не записывается, или, по крайней мере, он не записывается таким образом, чтобы процесс издателя мог его прочитать.

# receiver
while true; do nc -l 8000 > /tmp/my_file; done

# publisher
while true; do nc -l 9000 < /tmp/my_file; done

Я отправляю получателю такой текст:

echo "hello, world" | nc localhost 8000

И я пытаюсь прочитать это от издателя так:

curl localhost:9000

Но curl возвращает ошибку типа «пустой ответ от сервера», потому что «привет, мир» никогда не было написано.

Я тестирую это в Mac OS, но в конечном итоге мне нужно сделать то же самое в Linux (скорее всего, Alpine).

В некоторых системах команда «nc» требует, чтобы вы указали опцию «-p» перед номером порта. Попробуйте добавить "-p" перед 8000 и 9000 следующим образом:

# receiver
while true; do nc -l -p 8000 > /tmp/my_file; done

# publisher
while true; do nc -l -p 9000 < /tmp/my_file; done