【问题标题】:Send UDP from iPhone to iPhone via WAN通过 WAN 从 iPhone 向 iPhone 发送 UDP
【发布时间】:2014-07-26 18:55:12
【问题描述】:

在我最近的应用程序中,我设法通过本地网络 (WiFi) 中的 UDP 将数据(主要是音频)发送到其他 iPhone。现在我需要在 WAN 中做同样的事情。你们能指出我从哪里开始吗?我需要什么来实现这一目标?

我正在使用 GCDAsyncSocket 来管理套接字。我相信我必须有服务器,我可以在其中保存两个设备的 IP 地址。

另外,我如何连接到 NAT/防火墙后面的设备?我猜,我需要有公共 IP 地址(例如从http://checkip.dyndns.com/ 废弃)。然后我需要跟踪路由吗?还是 NSLookup?还是背着?还是我需要使用 UDP 打孔?

我知道这是很多问题,但如果您能指出正确的技术,我将不胜感激。

【问题讨论】:

    标签: ios sockets udp nat


    【解决方案1】:

    要在 NAT 后实现两个参与者之间的通信,您可以使用前面提到的打孔技术。这在这里解释得很好:http://en.wikipedia.org/wiki/UDP_hole_punching#Flow

    基本上,具有公共 IP 和端口的服务器用于共享 iPhone 的端口号。 但是 NAT 可能会为 iPhone 与之通信的每个不同 IP 使用不同的端口。因此,如果 iPhone1 向服务器发送数据,NAT 使用端口 X,但如果 iPhone1 想向不同的 IP 发送数据,NAT 可能会选择端口 Y。(参见http://en.wikipedia.org/wiki/Network_address_translation#Symmetric_NAT

    为了克服这个问题,有一个名为UPnP 的协议和鲜为人知的NAT Port Mapping Protocol。 我不精通 UPnP,但也许其他人可以提供一些相关信息。

    NAT-PMP 协议使您能够动态地请求将外部端口转发到您的设备。请参阅http://en.wikipedia.org/wiki/NAT_Port_Mapping_ProtocolRFC 6886。 这允许您“预测”您的外部端口并通过 NAT 建立连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-20
      • 2012-02-19
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多