从多个发件人接收UDP消息并通过TCP转发

从多个发件人接收UDP消息并通过TCP转发,tcp,udp,socat,Tcp,Udp,Socat,我正在尝试使用socat通过TCP转发UDP流量。我知道这个过程会丢失帧边界,但在这种情况下这不是问题。我使用以下命令使其部分工作: socat TCP-LISTEN:20000,fork UDP4-LISTEN:10000,reuseaddr 也就是说,socat等待客户端连接到TCP套接字,然后派生一个新的子进程来侦听UDP套接字。多个客户端应该能够使用TCP进行连接,并且每个客户端都应该获得收到的每个UDP消息。只要只有一个端点将数据发送到UDP套接字,这种方法就可以工作。但是,如果第二

我正在尝试使用
socat
通过TCP转发UDP流量。我知道这个过程会丢失帧边界,但在这种情况下这不是问题。我使用以下命令使其部分工作:

socat TCP-LISTEN:20000,fork UDP4-LISTEN:10000,reuseaddr
也就是说,
socat
等待客户端连接到TCP套接字,然后派生一个新的子进程来侦听UDP套接字。多个客户端应该能够使用TCP进行连接,并且每个客户端都应该获得收到的每个UDP消息。只要只有一个端点将数据发送到UDP套接字,这种方法就可以工作。但是,如果第二个端点正在向UDP套接字发送数据,则该数据将不会通过已建立的TCP连接转发

似乎
socat
在分支子进程中的UDP套接字上调用
connect()


是否有任何方法可以指示
socat
不过滤UDP流量并将来自任何端点的数据包转发到侦听UDP套接字?

我认为使用socat无法做到这一点,而且即使在我的2.0.0-b4版本中,我也看不到“重用”选项

假设命令:

socat TCP-LISTEN:20000,fork,reuseaddr UDP-RECVFROM:10000,reuseaddr

据我所知,在我的系统中,这将将UDP消息发送到所有TCP连接的客户端。它一次只将消息从一个UDP客户端发送到一个TCP客户端,一旦下一个UDP客户端连接,它将只向下一个TCP客户端发送数据。

这就是我观察到的行为。关于
reuse
,我可能是指
reuseaddr
,但在复制和粘贴命令时忽略了其余部分。我已经更新了这个问题。然后看起来它不能在socat中完成,但这几乎是任何语言中的基本套接字编程。