4

我在 3G 蜂窝网络上有一部 iPhone,在互联网上有一台服务器,我希望它们能够双向交换消息。有时 iPhone 向服务器发出请求,有时服务器向 iPhone 发出请求。问题是 iPhone 在蜂窝网络的 NAT 后面,并且它没有固定的 ip:port ,在每个新连接上端口都会改变。

我想我必须制作一个双向套接字 SO_REUSEADDR/SO_REUSEPORT 并使连接持久。

另外两个解决方案是 Apple 的推送通知和长轮询,现在我需要 iPhone 和服务器之间的 P2P 解决方案的答案。

你能告诉我我必须做什么或提供一个工作示例代码,iPhone 可以从互联网上的主机接收消息吗?

4

2 回答 2

0

我一直在阅读这些内容,我的理解是 XMPP 是适合您的解决方案。使用开源 XMPP 服务器(如 openfire)和 XMPPframework(一个 ios 模块)。

于 2012-05-01T12:46:23.753 回答
0

遗憾的是,iPhone 不支持 Java,因为 JXTA 框架可以轻松解决您的问题。

您正在寻找的是类似于TURN的 P2P 实现。Iphone 必须启动与服务器的连接才能在 NAT 上打洞,是的,它必须保持活动状态(即使您研究更复杂的实现,例如用于 NAT 穿越的STUNT )。

使用TURN,服务器必须在IPhone之间传输消息,使用STUNT,消息直接在设备之间传输,但要正确实现相当复杂。

于 2011-03-18T04:01:56.797 回答