gpt4 book ai didi

c++ - 建立P2P TCP/UDP连接(NAT穿越)

转载 作者:数据小太阳 更新时间:2023-10-29 03:14:32 62 4
gpt4 key购买 nike

有没有办法在没有中间服务器的情况下通过TCP或UDP建立真正的P2P通信?我知道如果两台计算机只有公共(public) IP 地址,这是非常可行的,但如果它们位于任何类型的 NAT 路由器后面或在专用网络上,它就会开始变得棘手。.事实上,我越看越觉得平淡不可能。我发现了 STUN、TURN 和 ICE 协议(protocol)以及打洞,但据我所知,它们都需要某种服务器来至少建立连接。我很惊讶看似如此简单的事情似乎很难做到,我错过了什么吗?理想情况下,我正在寻找使用 Golang 的解决方案,任何帮助或 C++ 中的示例也会很有用,谢谢。

最佳答案

这不是严格意义上的围棋问题——这是一个一般的网络问题。

之所以如此困难,是因为 Internet 从未被设计为支持 NAT,NAT 刚刚发生并破坏了很多功能。解决您的问题的干净解决方案是切换到没有 NAT 的 IPv6,但这可能是不可能的

如果您的 NAT 盒支持 NAT-PMP 或 uPNP,您可以使用它。最简单的方法是创建一个绑定(bind)到 libminiupnpc 的 cgo,或者你可以去寻找一个原生的 Go 库。

如果您的 NAT 不支持这两种协议(protocol)中的任何一种,那么您可能就不走运了,因为打洞是一种脆弱而困难的技术,您可能会发现难以实现。

关于c++ - 建立P2P TCP/UDP连接(NAT穿越),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40549502/

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