使用 socat/netcat 创建 UDP 到 TCP 桥接以中继 vlc 媒体播放器的控制命令

使用 socat/netcat 创建 UDP 到 TCP 桥接以中继 vlc 媒体播放器的控制命令

UDP - 必须侦听端口。 TCP - 必须连接到服务器。

我尝试过netcat并且socat

nc -v -u -l -p 3333 | nc -v 127.0.0.1 50000

socat -v UDP-LISTEN:3333,fork TCP:localhost:50000

两者都有效——它们传递了信息——但线路还没有结束。仅当我关闭 netcat/socat 时,VLC 才会接受该命令。

我监控了连接sockettest,并且消息在同一行中一个接一个地出现,如下所示:

playpausestopexitadd

我需要结束该行,以便传输的消息如下所示:

play
stop
exit
add

也许数据包还没有结束?

我想知道是否ncsocat有选项在一定时间后发送数据包/结束行。

如果我\n按照@roaima的建议添加到输出中,我就会得到play\nstop\nplay\n一行。

答案1

我怀疑你的问题更多是因为无论发送UDP数据包都没有在命令中添加换行符(因为它们应该发送"play\n"而不仅仅是"play")。

无论如何,如果您希望为每个 UDP 数据包创建一个新的 TCP 连接,您应该使用udp-recvfrom而不是udp-listenin socat

socat -u udp-recvfrom:3333,fork tcp:localhost:50000

然后,每个 UDP 数据包都应触发一个 TCP 连接,该连接仅用于发送数据包的内容,然后关闭。

通过执行以下操作进行测试:

echo play | socat -u - udp-sendto:localhost:3333

(发送一个 UDP 数据包,其负载包含 5 个字节"play\n")。

相关内容