如何在几个程序中接收相同的udpstream?

我有一个封闭的第三方系统发送一个单播UDPstream(MPEG-TS),我想在同一台计算机上的两个不同的程序访问。 我不能改变任何来源,甚至没有IP或端口。

有没有其他的select,而不是写我自己的小程序捕捉stream,然后创build新的stream,并重新发送?

看来只有两个目标程序中的一个处理多播,所以我需要两个单播stream。

Solutions Collecting From Web of "如何在几个程序中接收相同的udpstream?"

您应该可以使用socat将单播UDP转发到多播组,或者将数据保存到文件中并稍后处理。

编辑0:

这里是一个例子(这是在Linux上 – 没有任何Windows框)。 监听单播端口4242 ,转发到组播224.10.10.10:5252 (如果你在同一台机器上做所有事情,你可能需要添加ip-multicast-loop选项):

 ~$ socat UDP-LISTEN:4242 UDP-DATAGRAM:224.10.10.10:5252 

接收多播(需要接口地址或名称),转发到单播192.168.0.1:6666

 ~$ socat UDP-RECVFROM:5252,ip-add-membership=224.10.10.10:eth0,reuseaddr,fork \ UDP-DATAGRAM:192.168.0.1:6666 

运行上面两个不同的目标地址( reuseaddr选项允许这些在同一台机器上运行)。