iPhone(或蜂窝网络上的任何其他设备)是否可以收听套接字并等待其他iPhone通过AT& T网络(P2P)进行连接?我们能够通过本地网络成功完成此任务,但不能通过AT& T网络。
答案 0 :(得分:3)
我不是AT& T的客户,但其3G网络上的设备几乎肯定会落后于某种形式的Network Address Translation或“NAT”,因为它是众所周知的。
鉴于您希望设备之间的双向通信几乎肯定都落后于(可能是不同的)NAT,您需要一些遍历NAT的方法。输入Session Traversal Utilities for NAT或简称“STUN”。另请参阅通用网络hole-punching技术。
在自由MIT许可下,有一个名为TCMPortMapper的NAT遍历的Objective-C / Cocoa框架。它提供对UPnP和NAT-PMP的支持,它可能会或可能不会让您一路走来 - 这取决于AT& T(或任何其他相关的电信公司)是否允许您请求端口
如果上述框架不够,您将不得不考虑提供一个众所周知的(即在开放式互联网上)中继服务器来调解两个设备之间的连接。这是Skype,Hamachi,Xbox Live等服务通常采用的方法。祝好运!
答案 1 :(得分:0)
我不是iPhone的专家,但这在很大程度上取决于iPhone上可用的传输层。如果UDP和TCP可用,则有可能。如果iPhone有一个公共IP地址(我怀疑),那么这是你的幸运日,因为答案是肯定的(至少在理论上)。
您可以轻松实现UDP的侦听器并实现一些样板代码来建立远程连接。但是,您很快就会注意到,您必须解决更复杂的问题,例如查找对等方的公共IP地址(即发现对等方)。
如果这变得太复杂,你将需要探索P2P框架,例如JXTA(或JXSE,它在Java中的实现)。顺便说一句,JXTA / JXSE适用于具有私有IP地址的对等体。我听说JXSE也已在Android上成功移植过。