iphone - iPhone上的TCP打洞

标签 iphone networking tcp nat upnp

我读了一些书,虽然我是 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(一个会合服务器和两个节点)来做这个。

  1. 开发一个在一台电脑上运行的会合服务器程序。该程序应该能够交换两个 iphone 设备的公共(public) ip。

  2. 开发一个安装在 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/

相关文章:

iphone - 我的 UITableViewCell 中没有文字

从网络驱动器启动的 c# .net4 应用程序需要很长时间才能加载

linux - 在 tcp "long"连接和 "short"连接之间选择内部服务

iphone - iOS - 结果之间的差异

iphone - sizeWithFont : method 的替代方案

iphone - 我没有影子

azure - 如何检查当前是否使用 Azure 子网的 Microsoft.Storage 服务终结点

c# - 点对点去中心化网络——向所有点发送消息

java - 如何通过tcp/ip从java接收文件到C?

python - 只要子进程仍在运行,subprocess.Popen 后关闭套接字就会在 TIME_WAIT 中留下套接字