如何在 C++ 中创建客户端 UDP 套接字,以便它可以侦听另一个应用程序正在侦听的端口?换句话说,如何在 C++ 中应用端口复用?
我只想监听一个端口
您可以使用嗅探器来做到这一点。只需忽略来自不同端口的数据包即可。
我可能需要阻止它发送一些特定的数据包,因为我的程序将发送它而不是原始应用程序
好吧,在这里我建议你放弃嗅探器,并使用MITM http://en.wikipedia.org/wiki/Man-in-the-middle_attack技术。
您需要依靠 PREROUTING 防火墙规则来divert将数据包发送到“proxy” 应用程序。假设 UDP、Linux、iptables 和 “proxy“在同一主机上运行,这就是”proxy“实际上需要做的是:
1.添加防火墙规则divert数据包(如果您愿意,可以手动执行):
iptables -t nat -A PREROUTING -i <iface> -p <proto> --dport <dport>
-j REDIRECT --to-port <newport>
2.绑定并收听<newport>
.
3.中继 2 个端点(客户端和原始目的地)之间的所有流量。如果您正在运行“proxy“在不同的主机上,使用获取套接字 http://www.opengroup.org/onlinepubs/009695399/functions/getsockopt.html with SO_ORIGINAL_DST
检索原始目标地址。
这可能听起来很棘手,但是......是的,那是因为它有点棘手:-)
如果我的假设有分歧,请查阅您的防火墙文档。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)