Der Netcat-Befehl funktioniert nicht im bidirektionalen Modus

Der Netcat-Befehl funktioniert nicht im bidirektionalen Modus

Ich verwende netcat in Linux, um Daten (mit dem UDP-Protokoll) von einem seriellen Port über das Netzwerk an ein anderes Gerät zu senden und zu empfangen. Der Befehl lautet:

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

Das von mir verwendete USB ist ein USB-zu-Seriell-485-Konverter und mir fällt auf, dass die Empfängerleuchte überhaupt nicht blinkt, während die Sendeleuchte blinkt.

Ich habe mit tcpdump überprüft, ob die Nachrichten über das Netzwerk gesendet und empfangen werden, und ich konnte deutlich sehen, dass die Daten zwischen meinem Computer und dem Gerätecomputer übertragen werden! Ich denke jetzt, es könnte ein Netcat-Problem sein. Irgendwelche Ideen?

Antwort1

Ich werfe das einfach mal in den Raum...

Aber Strg-D kann das Dateiende signalisieren, und vielleicht enthalten Ihre Eingabeströme dieses Zeichen. Dadurch würde dieser Eingabestrom beendet, während der andere möglicherweise weiterarbeitet.

Ich weiß zwar nicht, was in Ihrer speziellen Situation passiert ist, aber ich weiß, dass Sie dies über nc in der Befehlszeile testen können:

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


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

#create a client
nc localhost 9000

Geben Sie in beiden etwas ein. Drücken Sie in einem Terminal Strg-D. Jetzt werden die Eingaben in diesem Terminal nicht angezeigt, die Eingaben im anderen Terminal werden jedoch weiterhin angezeigt.

Hat mich überrascht. Ich dachte, es hätte eine Art Pufferproblem oder wäre Halbduplex. Habe Ihre Frage gefunden, bevor ich die Antwort gefunden habe.

Oh, und um sicherzustellen, dass es sich nicht so verhält:

stty eof undef

verwandte Informationen