iPhone(在蜂窝网络NAT后)与服务器之间的点对点互联网连接。

4
我有一部连接3G蜂窝网络的iPhone和一个位于互联网上的服务器,我希望它们能够双向交换消息。有时iPhone向服务器发出请求,有时服务器向iPhone发出请求。问题在于,iPhone在蜂窝网络的NAT后面,每次新连接时端口都会更改,因此没有固定的IP地址和端口号。
我认为我需要创建一个具有SO_REUSEADDR / SO_REUSEPORT的双向套接字,并使连接持久化。
另外两个解决方案是Apple的推送通知和长轮询,现在我需要一个关于iPhone和服务器之间P2P解决方案的答案。
你能告诉我该怎么做或者提供一个可工作的示例代码,让iPhone可以接收来自互联网主机的消息吗?

你正在使用TCP还是UDP套接字?你能够更改iPhone应用程序和服务器实现来解决你的问题吗? - kennbrodhagen
2个回答

0

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

您正在寻找的是类似于P2P的TURN实现。 iPhone必须启动与服务器的连接以打洞NAT,是的,它必须保持活动状态(即使您研究更复杂的实现,如STUNT进行NAT遍历)。

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


0
我已经阅读了很多关于这些事情的资料,我的理解是XMPP是适合你的解决方案。使用开源XMPP服务器(如openfire)和XMPPframework(一个iOS模块)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接