Linux - 通过UDP接收数据;接受 TCP 连接,将数据传递给客户端

Linux - Receive data via UDP; accept TCP connections, pass the data to the clients

我遇到的情况是,我在预定义端口(比如 20001)上通过 UDP 接收数据。

我的目标是让多个客户端可以访问相同的数据,这些客户端将通过 TCP 连接到我,同样是在预定义的端口(比如 30001)上。

这似乎是一件很容易完成的事情 - 但它不完全在我的专业知识范围内。所以我做了一些阅读,并且相当接近使用 netcat:

nc -l -p 30001 --keep-open --sh-exec "nc -u -l 20001"

不幸的是,这会导致 --sh-exec 命令的一个新实例随每个后续的 TCP 连接产生,并且只有第一个实际 'hears' 传入的 UDP 数据 - 所以它有效果第一个连接 'wins' 的 TCP 客户端和任何后续连接都没有接收到任何东西,同时堆积了一堆无用的进程。

我还认为通过管道将数据输入其中可能有效:

nc -l -p 30001 --keep-open | nc -u -l 20001

可惜没有。

感觉我可能使用了错误的工具来解决这个问题,但我不确定better/more适合这项工作的工具是什么。

我欢迎你的想法!

如果不是 bi-directional 流量,您可以使用以下方法: nc -l -u -p 20001 | ncat -k -l -p 30001

从中学习 post: 无法将多个 TCP 流连接到 nc 因此他们建议使用 ncat.