Команда netcat не работает в двунаправленном режиме

Команда netcat не работает в двунаправленном режиме

Я использую netcat в Linux для отправки и получения данных (используя протокол udp) с последовательного порта на другое устройство через сеть. Команда:

nc -u 192.168.10.12 < /dev/ttyUSB0 > /dev/ttyUSB0 

Я использую USB-конвертер USB-Serial 485, и я заметил, что индикатор приемника вообще не мигает, а индикатор передачи мигает.

Я проверил, отправляются и принимаются ли сообщения через сеть с помощью tcpdump, и я ясно увидел, что он передает данные между моей машиной и машиной устройства! Теперь я думаю, что это может быть проблема netcat, есть идеи?

решение1

Просто выкладываю это здесь.

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

Хотя я не знаю, что произошло в вашей конкретной ситуации, я знаю, что вы можете проверить это с помощью nc в командной строке:

#create a server
nc -v -v -l -p 9000      #yes, I was testing xdebug...


-------- in a different terminal:

#create a client
nc localhost 9000

Введите что-нибудь в обоих терминалах. Нажмите Ctrl-D в одном из них. Теперь то, что вы вводите в этом терминале, не будет отображаться, но то, что вы вводите в другом терминале, все равно будет отображаться.

Застал меня врасплох. Я думал, что у него какая-то проблема с буфером или он полудуплексный. Нашел ваш вопрос до того, как нашел ответ.

О, и чтобы убедиться, что он не будет себя так вести:

stty eof undef

Связанный контент