gpt4 book ai didi

C++ UDP Socket 端口多路复用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:02 27 4
gpt4 key购买 nike

如何在 C++ 中创建客户端 UDP 套接字,以便它可以监听另一个应用程序正在监听的端口?换句话说,我如何在 C++ 中应用端口多路复用?

最佳答案

I want to listen on only one port

你可以用嗅探器做到这一点。忽略来自不同端口的数据包即可。

I might need to stop it from sending out some particular packets, because my program will send it instead of the original application

好吧,我建议你放弃嗅探器,使用 MITM技术。

您需要依靠 PREROUTING 防火墙规则将数据包转移到“代理”应用程序。假设 UDP、Linux、iptables 和“proxy”在同一台主机上运行,​​下面是“proxy”实际需要做的事情:

1. 添加防火墙规则以转移数据包(如果您愿意,请手动执行):

iptables -t nat -A PREROUTING -i <iface> -p <proto> --dport <dport>
-j REDIRECT --to-port <newport>

2.绑定(bind)并监听<newport> .

3. 中继 2 个端点(客户端和原始目的地)之间的所有流量。如果您在不同的主机上运行“代理”,请使用 getsockoptSO_ORIGINAL_DST检索原始目标地址。

这听起来可能很棘手,但是......是的,那是因为它有点棘手:-)如果我的假设有分歧,请查阅您的防火墙文档。

关于C++ UDP Socket 端口多路复用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3878303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com