我读了一些书,虽然我是 iPhone 网络的新手,但我想知道是否可以使用 TCP 打洞器通过 NAT 连接两部 iPhone。我还阅读了一些有关 uPnP 和发夹的有用信息,但我根本不熟悉这些内容,所以如果有人对这是否可行有任何想法。
我的目标是能够在大范围内连接多部 iPhone(因此切换到某种类型的 GPSR 可能会更好)但目前我只使用两部 iPhone,3G NAT Traversal 似乎是最简单和理论上最可靠。
最佳答案
nat traversal 是通用术语,用于在会合服务器的帮助下直接连接两个节点。节点可以是任何计算机、智能手机或任何其他设备。就 3g 而言,它是传输数据的媒介之一更多。
如果您在同一 NAT 下的对等设备使用公共(public) ip 相互连接,则会出现发夹,因为某些路由器不支持发夹,如 cisco 路由器等。如果您使用私有(private) IP 而不是公共(public) IP,则可以克服这一点。我在你的案例中不能说任何关于发夹的事情,因为我不知道关于你的网络的技术细节。
用技术细节更新你的问题,比如你正在使用的 3g 类型。然后我只能说关于 3g 上的发夹。
我已经在 2g 上实现了 udp/tcp 打洞。我用了三台 PC(一个会合服务器和两个节点)来做这个。
开发一个在一台电脑上运行的会合服务器程序。该程序应该能够交换两个 iphone 设备的公共(public) ip。
开发一个安装在 iphone 中的客户端程序。将 iphone 连接到服务器,这会将 iphone 的公共(public) IP 暴露给服务器。对第二个 iphone 重复相同的过程。现在服务器将交换公共(public) ip/端口到两个 iphone。 现在每个人同时开始向对方发送数据包,这将在 NAT 中打洞。
有关打洞的详细信息,请参阅此 http://www.brynosaurus.com/pub/net/p2pnat/
最好尝试使用易于开发的 UDP 打洞。TCP 打洞有点棘手。一旦实现了 UDP 打洞,就很容易实现 TCP 打洞。
了解 STUN、ICE、NAT 类型、Nat 映射
https://www.rfc-editor.org/rfc/rfc5389
http://en.wikipedia.org/wiki/Network_address_translation
关于iphone - iPhone上的TCP打洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6421742/