我用来socat
将传入的串行流量转发到本地 UDP 端口(在 macOS 上):
socat OPEN:/dev/cu.usbmodem13203 UDP:localhost:12345
我认为串行设备是流接口,而 UDP 是基于数据包的,因此不存在明确的正确答案在哪里或如何引入数据包边界。在我的测试中,每个字节都作为其自己的 UDP 数据包转发。例如,当发送字符串“XYZ”时,我的测试服务器输出:
Datagram: X
Datagram: Y
Datagram: Z
为什么字节序列会被分成几个数据包?其背后的机制是什么?有什么办法可以控制这种行为吗?