【问题标题】:using socat to multicast an mpeg-2 stream使用 socat 多播 mpeg-2 流
【发布时间】:2019-11-21 17:00:34
【问题描述】:

我有一个损坏的 ts 文件,其中包含一些 MPEG-2 流,偶尔会出现故意的数据包错误。这个想法是分析我正在尝试构建的另一个应用程序上的流并检测错误。

如果我使用 socat 作为

socat -u open:test.ts udp:localhost:1234
sleep 0.001

它在该套接字上正确发送文件的内容,我可以在我的客户端应用程序中侦听该端口以分析传输流数据包。现在,我希望我的应用程序也支持多播。为此,我使用类似

socat -u open:test.ts udp:239.48.208.1:1234
sleep 0.001

并在我的应用程序上收听该多播地址。我什么也没收到。因为我知道多播地址在我的防火墙内是有效的,所以我假设这是 socat 首先没有发送任何数据包的问题。所以,我认为这不是使用 socat 通过网络发送文件内容的正确方法。

但它不一定是 MPEG-2 流。我只想知道如何在特定的多播地址和端口上多播二进制文件的内容。

【问题讨论】:

    标签: unix udp socat


    【解决方案1】:

    这个我没试过,但是socat的作者Gerhard Rieger在dest-unreach.org上有很多详细的例子。第一个示例是多播客户端和公共网络 192.168.10.* 上的多个接收服务器。客户端 192.168.10.1 发送到一个组播地址,接收 服务器可能会发送响应数据包。在任何服务器上,例如192.168.10.2,我们有

    socat UDP4-RECVFROM:6666,ip-add-membership=224.1.0.1:192.168.10.2,fork EXEC:hostname
    

    这意味着接收到 224.1.0.1 的多播,并为每个数据包派生一个进程。进程(例如hostname)可以发回一个或多个回复数据包。 192.168.10.2 是接收的接口(因此每个服务器都不同);请参阅ip-add-membership 的 socat 手册页。

    在我们的发送客户端

    socat STDIO UDP4-DATAGRAM:224.1.0.1:6666,range=192.168.10.0/24
    

    从标准输入发送数据以进行多播。它将打印任何收到的回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多