因此,我在我的 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/