windows - 如何在多个程序中接收相同的udp流?

标签 windows networking udp mpeg2-ts

我有一个封闭的第三方系统,该系统发送单播 UDP 流 (MPEG-TS),我想在同一台计算机上的两个不同程序中访问该流。我无法更改源上的任何内容,甚至无法更改 IP 或端口。

除了编写自己的小程序来捕获流然后创建新流并重新发送这两个流之外,还有其他选择吗?

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

最佳答案

您应该能够使用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

通过多播接收(需要接口(interface)地址或名称),转发到单播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选项允许它们在同一台机器上运行)。

关于windows - 如何在多个程序中接收相同的udp流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12564580/

相关文章:

windows - 为什么 QueryPerformanceCounter/QueryPerformanceFrequency 会失败?

c++ - 在 Windows 上使用带有 Cxx.jl 的 Julia 中的 boost 库

windows - Windows 批处理中 Bash 的 "-"是什么?

c++ - WinSock accept() 返回 204.204.204.204

networking - TCP ACK 中的校验和 0xDEAD

c# - WindowsIdentity 缺失组 - 特别是管理员组

node.js - 使用特定网络接口(interface)执行请求

java - 通过UDP解码java中的C结构数据报包

java - UDP 服务器从客户端获取数据,即使服务器是最后启动的

Python UDP 套接字不接收环回地址上的消息