我有一个与this question非常相似的问题,但所提供的解决方案对我而言并不适用。实际上我想做一些与众不同的事情,所以也许有更好的办法。处理UDP数据包并同时转发它们
我希望将UDP单播数据包(视频流)发送到服务器。服务器会将这些数据包转发到另一台计算机。或者,登录服务器的用户可以使用类似mplayer的方式观看视频流。我非常肯定我可以将视频流传输到服务器和视频源的最终目的地,但我真的希望服务器能够控制它。
第一次尝试: 下载nmap以获取ncat工具。以为我可以使用它来下载和管道字节mplayer和转发与另一个ncat进程。我可以管到mplayer,它运作的很好,我不能同时转发。如果我使用的是Linux,显然我可以使用Tee和流程替换,但我正在寻找Windows解决方案。
第二次尝试 我发现一种解决方案,这种类型的隐含管道到多个程序将可能在PowerShell中。但是我发现二元管道不起作用。
第三次尝试 我试图编程一个tee-like可执行文件,它将发球到两个程序。这跟我一样近,但视频流看起来有点损坏。我认为这比其他任何问题都更重要。
第四次尝试 现在我正处在发现socat的地步,这引起了我的联系。这似乎很奇怪,但我认为解决方案将是我的服务器将数据包转发到目的地,并将数据包转发到服务器上的其他端口,该端口将与netcat或socat一起用于管道到mplayer。我宁愿不使用服务器上的另一个端口,但如果这就是我必须做的,那么确定。但正如我所说,来自另一个问题的解决方案似乎并不奏效。 Mplayer开始缓冲,然后很快停下来。
按顺序在一个单独的cmd窗口中分别对其进行运算。注意我没有尝试转发到目标计算机,只是试图让mplayer在服务器上工作。
socat UDP4-LISTEN:5000 UDP-DATAGRAM:224.10.10.10:5001
socat UDP4-recvfrom的:5001,IP-附加成员= 224.10.10.10:0.0.0.0,reuseaddr,叉UDP -DATAGRAM:192.168.16.33:5002
ncat -l -u -p 5002 | mplayer -vo direct3d -cache 1024 -
根据MPlayer的输出,我似乎得到大约924个字节。
虽然我会继续学习socat,但我很新鲜。我认为我没有正确运行socat,但我不确定问题出在哪里。如果任何人都可以指出我的错误或提供替代解决方案,我会非常感激。谢谢。
编辑:
我做了一些更多的测试,如果我改变第二socat做到这一点:
socat UDP4-recvfrom的:5001,IP-附加会员= 224.10.10.10 :0.0.0.0,reuseaddr,fork - | mplayer -vo direct3d -cache 1024 -
我发现它会播放来自多播地址的流。但显然转发到端口5002上的单播地址是不起作用的。