将本地UDP服务器信息转换为c ++

时间:2013-03-28 00:12:09

标签: c++ udp routes multicast

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

我知道,没有代码,但更像是理论事物而非实施问题。

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

感谢您的时间。

1 个答案:

答案 0 :(得分: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 ++程序读取该文件。 tee的输出将再次发送到netcat,它可以将数据发送到您喜欢的地方(另一个主机)。

就像是:

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

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