1

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

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

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

谢谢你的时间。

4

1 回答 1

0

您似乎对不同的技术持开放态度。我不是网络专家,也不是 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 发送数据包的位置,您可以将它们发送到某个端口上的 localhost,netcat打开以侦听该端口,然后使用tee重定向文件上的输出并使用您的 C++ 程序读取该文件。will to的输出tee再次netcat可以将数据发送到您喜欢的地方(另一个主机)。

就像:

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

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

于 2013-03-28T00:22:50.453 回答