iPhone上的TCP打孔

iPhone上的TCP打孔,iphone,networking,tcp,nat,upnp,Iphone,Networking,Tcp,Nat,Upnp,我读过一些书,虽然我对iPhone网络还不熟悉,但我想知道通过NAT连接两部iPhone是否可以使用TCP打孔器。我也读了一些关于uPnP和发夹的有用的东西,但我对它们一点也不熟悉,所以如果有人知道这是否可行的话 我的目标是能够在大范围内连接多部iPhone(因此最好切换到某种类型的GPSR)但目前我只使用两部iPhone,3G NAT穿越在理论上似乎是最简单和最可靠的。NAT穿越是一个通用术语,用于借助rendevous服务器直接连接两个节点。节点可以是任何计算机,智能手机或任何其他设备。就3

我读过一些书,虽然我对iPhone网络还不熟悉,但我想知道通过NAT连接两部iPhone是否可以使用TCP打孔器。我也读了一些关于uPnP和发夹的有用的东西,但我对它们一点也不熟悉,所以如果有人知道这是否可行的话


我的目标是能够在大范围内连接多部iPhone(因此最好切换到某种类型的GPSR)但目前我只使用两部iPhone,3G NAT穿越在理论上似乎是最简单和最可靠的。

NAT穿越是一个通用术语,用于借助rendevous服务器直接连接两个节点。节点可以是任何计算机,智能手机或任何其他设备。就3g而言,它只是传输数据的媒介之一

如果在同一NAT下的对等设备使用公共ip相互连接,因为某些路由器不支持诸如cisco路由器等的发夹,则会出现发夹。如果使用私有ip而不是公共ip,则可以克服这一问题。在您的情况下,我不能说任何关于发夹的事情,因为我不知道你们网络的技术细节

用技术细节更新你的问题,比如你正在使用的3g。然后只有我能说关于3g上的发夹

我已经在2g上使用实现了udp/tcp打孔。我使用了三台PC(一台渲染服务器和两个节点)来实现这一点

  • 开发一个rendevous服务器程序,该程序将在一台pc上运行。该程序应能够交换两台iphone设备的公共ip

  • 在iphone中开发客户端程序。将iphone连接到服务器这将向服务器公开iphone的公共ip。对第二台iphone重复相同的过程。现在服务器将交换公共ip/端口到两个iphone。 现在,每个人同时开始向对方发送数据包,这将在NAT中穿孔

  • 有关打孔的详细信息,请参见本页

    最好尝试UDP打孔,这很容易开发。TCP打孔有点棘手。一旦实现UDP打孔,就很容易实现TCP打孔

    了解晕眩、冰、NAT类型、NAT映射



    蜂窝网络使用大规模NAT。只有三种方法可以绕过它

  • 不要使用蜂窝网络或使用连接到蜂窝网络的家庭/Wifi

  • 获得一个回合服务器

  • 使用多UDP打孔(先进技术)。对于多UDP打孔,请尝试:


  • 事实上,我想知道是否只有iPhone才有可能。我的猜测是否定的,因为你必须以某种方式控制每个iPhone的局域网,但我不确定。每个iPhone的局域网都是提供商的网络,比如英国电信,沃达丰。该本地区将为每个iPhone提供IP地址,并且IP是其网络的本地。但当涉及到不同网络之间的两个iPhone之间的通信时,例如沃达丰和英国电信之间的通信,他们将使用一些公共IP。这是我不确定的想法。如果你能澄清的话“无论如何,我们都能控制每个iPhone的本地网络“比理解你的问题更容易是的。我认为问题是每部手机只能获得另一部手机的公共ip。我认为在不了解每部手机所在网络的情况下,通过3G获取ip本地ip地址是不可能的,因为沃达丰、电信、AT&t或Singtel(例如)控制着该网络,我认为这是不可能的。我想知道,如果没有手机的本地ip,或者访问该网络查找ip地址,是否可能。我从未尝试过3G,但我尝试过使用数据卡(2G)对于Vodafone/Air Tel,它将只提供公共Ip。该公共Ip足以在同一网络内或外部相互通信。2g网络和3g网络是相同的。在任何组织中,当您的设备使用路由器(如PC)与网络连接时,都会出现私有Ip。因此,在一个组织中,可以容纳大量用户他们安装了NAT/路由器。在这里,如果是移动通信,这种情况永远不会发生,因为您的iPhone没有与路由器连接,提供商会为每部手机动态分配IP地址。因此,如果我理解正确,只要这两部手机位于不同的网络中,提供商就会为它们分配不同的IP地址,您将无法直接通信(不使用服务器或其他设备)。他们必须在同一个网络中,我不能保证这一点。