我在 Linux 中使用 netcat 通过网络从串行端口向另一台设备发送和接收数据(使用 udp 协议)。命令是:
nc -u 192.168.10.12 < /dev/ttyUSB0 > /dev/ttyUSB0
我正在使用的 USB 是 USB 到串行 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