是否可以通过互联网在两个移动设备 (iPhone) 之间连接套接字?
我正在尝试发现每个设备的 IP 并直接连接。我知道它可以用 Bonjour 来完成,但这只适用于本地网络。我需要通过互联网在两个设备之间建立高速连接。
谢谢。
如果你有两个 IP 并且它们都是可路由的,那么应该是可能的。我不确定 3G 网络提供的 IP 是否可路由。如果您使用的是 WIFI,那么您获得的 IP 几乎可以肯定是不可路由的。假设你有一个可路由的 IP,它应该是可能的。
诀窍就是发现其他设备的 IP。最好的方法可能是让每台设备在您的应用程序启动时向 Web 服务注册其 IP,然后查询该服务以查找其他设备的 IP。
当应用程序关闭或 IP 更改时,管理“取消注册”IP 可能会有点棘手,但它应该是可行的。
预计到达时间:
如果您有一个他们都可以连接的服务器,您应该能够使用该服务器实现一个解决方案(即没有电话实际上直接相互连接)。这将避免电话具有可路由 IP 的问题。
至于如何将套接字桥接在一起 - 您的服务器程序基本上可以像老式电话交换机操作员一样工作。您将在服务器软件中内置某种注册和发现协议,允许电话向服务器注册自身,查询当前连接到服务器的其他电话的列表,指示它想与哪个电话交谈,并接受来自其他手机的连接。
一旦它知道谁想与谁交谈,您的服务器软件就会通过从一部手机的套接字读取数据并将该数据写入另一部手机的套接字来将两者连接在一起。
只是一个建议,但如果你能让他们每个人都连接到第三个站点,那么你就会知道每个人的地址。将电话 A 的地址发送到电话 B(和/或电话 B 到电话 A),然后让它们按照您认为合适的方式连接。
你看过 3.0 的所有功能了吗?特别是对等网络(其存在是公开的)。
WiFi路由器通常具有称为“端口触发”的功能,它允许内部主机(在本例中为iPhone)通知路由器他们希望将特定端口上的连接转发给它们。我不知道 iPhone 是否支持这个协议。
对于 IP 查找,如果提前知道两个主机,则可以考虑使用 DynamicDNS,或者如果不知道,则如上所述使用自定义 Web 服务(即朋友交换主机名与陌生人相互发现)
这是一个旧线程,但我刚刚遇到它。您可以使用 STUN 服务器(或 NAT-PMP)获取公共 IP 地址/端口组合,然后将其发送到另一部手机。只要您在第一台设备上打开一个监听端口,那么您的第二台设备就可以直接使用您在 SMS 中发送给它的 publi IP 地址/端口直接连接(SMS 推送注册表可以自动唤醒您在第二台设备上的应用程序以做这个)
我在开发的应用程序中遇到了这个问题。我试图从 iPhone 连接到 PC 手机卡。问题是 AT&T 不支持 iPhone 的移动终端,因此 AT&T 网络上的两部手机在物理上不可能相互连接。这直接来自 AT&T 天线工程师。
我可以通过将 iPhone VPN 连接到服务器然后连接到 PC 手机卡来实现此功能,但除此之外,它无法正常工作。
我有一种非常强烈的感觉(但没有证据)iPhone 地址将无法路由。当然这实际上取决于运营商,但 AT&T 给出 10.xxx 地址。
Apple 有使用 Bonjour 在支持 UnPnP 的 WiFi 路由器上实现端口映射的示例(桌面)代码。