c++ - 获取本地UDP服务器信息到c++

标签 c++ udp routes multicast

因此,我在我的 Mac 上运行了这个程序 ipMidi,它允许我通过我的以太网连接发送 MIDI 事件。 它在 UDP 协议(protocol)下工作,并从我的 Ableton Live daw 发送 midi。 我试图在运行 ipMidi 的同一台机器上读取 ipMidi 中的包到我的 C++ 程序中,但我不知道如何执行此操作。 我已经做了一段时间的研究,我只是想不出如何让 ipMidi 将包发送到我的本地主机或嗅探通过我的以太网的包。 我发现的工具之一是路由,但我无法复制 ip 表条目以将包发送到我正在监听的 UDP 程序。 我发现这样做的另一种方法是让我的程序在目标 ip 和目标包的端口中加入内核上的多播组我用 wireshark 从 ipMidi 嗅探,但这是不可能的,因为绑定(bind)告诉我地址正在被使用。 所以我真的需要一些帮助。

我知道没有代码,但更像是理论问题而不是实现问题。

希望我解释清楚,我的英语不是最好的。

感谢您的宝贵时间。

最佳答案

看来您对不同的技术持开放态度。我不是网络专家,也不是 iptables 专家,但我会尝试寻找 iptable 的“tee”等价物。我发现此链接可能对您有用。

https://unix.stackexchange.com/questions/15870/iptables-port-mirroring

编辑:另一个可能有用的 http://www.bjou.de/blog/2008/05/howto-copyteeclone-network-traffic-using-iptables/

我想到的另一个技巧是,如果您可以控制 ipMidi 发送数据包的位置,您可以将它们发送到特定端口上的本地主机,打开 netcat 以监听该端口,然后使用 tee 将输出重定向到文件并使用 C++ 程序读取该文件。 tee 的输出将再次发送到 netcat,它可以将数据发送到您喜欢的地方(另一台主机)。

会是这样的:

ipMidi -> localhost -> nc listening -> tee -> nc sending -> destination
                                           -> file -> your program.

但这只是一个尝试的想法,如果没有人提出更好的解决方案(不太可能)。

关于c++ - 获取本地UDP服务器信息到c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671961/

相关文章:

c++ - 随机洗牌操作

c++ - 在#define 中给定文本,它能以某种方式传递给模板吗?

c++ - 处理特定类型元素的任何容器的非模板函数

c++ - 具有非阻塞 udp 套接字的 poll()

javascript - react 路由器中的相对路由

ruby-on-rails-3 - Rails3 SSL 路由问题

c++ - 用于识别 "const"错失机会的开发工具

udp - 将 UDP 转换为 TCP - Ngrok TCP => UDP

networking - Winsock bind() 失败,WSAEADDRNOTAVAIL 用于定向广播地址

python - 有没有一种方法可以使用 python3 在本地获取默认网络接口(interface)?