是否可以通过互联网在两个移动设备(iPhone)之间连接插座?

时间:2009-05-01 13:16:17

标签: iphone sockets tcp p2p

是否可以通过互联网在两个移动设备(iPhone)之间连接套接字?

我正在尝试发现每个设备的IP并直接连接。我知道可以用Bonjour完成,但这只适用于本地网络。我需要通过互联网在两台设备之间建立高速连接。

感谢。

7 个答案:

答案 0 :(得分:10)

如果您同时拥有IP并且它们都可以路由,那么它应该是可行的。我不确定3G网络发出的IP是否可以路由。如果您使用的是WIFI,那么您获得的IP几乎肯定不可路由。假设你有一个可路由的IP,它应该是可能的。

诀窍就是发现其他设备的IP。最好的方法可能是让每个设备在你的应用启动时使用网络服务注册其IP,然后查询该服务以查找其他设备的IP。

当应用程序关闭或IP更改时,管理“取消注册”IP可能会有点棘手,但它应该是可行的。

ETA:

如果您有可以连接的服务器,您应该能够使用该服务器实现解决方案(即,实际上没有电话直接连接到彼此)。这样可以避免为手机提供可路由的IP。

至于如何将插座桥接在一起 - 您的服务器程序基本上就像老式电话总机操作员一样工作。你有一些注册和服务器软件中内置的发现协议,允许手机向服务器注册自己,查询当前连接到服务器的其他手机的列表,指出要与之通话的手机,以及接受来自其他手机的连接。

一旦知道谁想与谁交谈,您的服务器软件就会通过从一个手机的插座读取并将该数据写入另一个手机的插座来将两者连接在一起。

答案 1 :(得分:2)

只有一个建议,但如果你能让他们每个人连接到第三个网站,你就会知道每个网站的地址。将手机A的地址发送到手机B(和/或手机B发送到手机A),然后根据需要连接它们。

答案 2 :(得分:1)

您是否浏览了所有3.0功能?特别是对等网络(其存在是公开的)。

答案 3 :(得分:1)

WiFi路由器通常具有称为“端口触发”的功能,该功能允许内部主机(在这种情况下为iPhone)通知路由器他们希望在转发给他们的特定端口上建立连接。我不知道iPhone是否支持这个协议。

对于IP查找,您可以考虑使用DynamicDNS,如果提前知道这两个主机,或者如上所述,如果不是自定义Web服务(即交换主机名的朋友与陌生人互相发现)

答案 4 :(得分:1)

这是一个老线程,但我刚遇到它。您可以使用STUN服务器(或NAT-PMP)获取公共IP地址/端口组合,然后将其发送到另一部电话。只要您在第一台设备上打开一个监听端口,那么您的第二台设备就可以直接使用您在SMS中发送给它的publi IP地址/端口直接连接(SMS推送注册表可以自动将您的应用程序在第二台设备上唤醒这样做)

答案 5 :(得分:1)

我使用我正在开发的应用程序遇到了这个问题。我试图从iPhone连接到PC手机卡。问题是AT& T不支持iPhone的移动终端,因此AT& T网络上的两部电话实际上不可能相互连接。这直接来自AT& T天线工程师。

我能够通过将iPhone VPN连接到服务器然后连接到PC单元卡来实现这一点,但除此之外,它无法正常工作。

答案 6 :(得分:0)

我有一种强烈的感觉(但没有证据)iPhone地址将是不可路由的。当然,它实际上取决于运营商,但AT& T给出10.x.x.x地址。

Apple有sample (desktop) code使用Bonjour在支持UnPnP的WiFi路由器上实现端口映射。