两个iOS设备之间是否可以建立socket连接?

3

两个连接在同一网络下的iOS设备是否可以建立Socket连接(不使用互联网)?

如果可能的话,使用CocoaAsyncSocket项目是否有用?

我只想从设备A向处于后台运行的设备B发送消息,当设备B接收到消息时,应该显示通知以使应用回到前台。

这不是为了上架App Store,因此我不在意苹果是否会因为这种行为而拒绝应用程序。


我正在看你的另一个问题...对于这个问题,您是否也想通过WiFi进行连接,而无需访问运营商的网络? - Nate
我只想使用类似于ad-hoc(即点对点)的本地网络,如果可能的话不需要互联网信号...感谢Nate的快速回复。 - Husam
1个回答

3
是的,您可以做到,并且CocoaAsyncSocket会很有用。如果您不必担心运营商网络的防火墙和过滤器,那么您肯定能够构建在两个iOS设备上运行的客户端-服务器应用程序。其中一个打开服务器套接字进行监听,另一个(客户端)通过Wi-Fi网络连接。
尝试在Google上搜索(例如“CocoaAsyncSocket iPhone iOS site:stackoverflow.com”)或直接在Stack Overflow上搜索。
这里是似乎已经完成此操作的人

另一个链接

还有一篇Robbie Hanson自己的文章,引用了github存储库中的EchoServer项目

EchoServer 项目

您可能需要为 服务器 设备使用 静态 IP 地址(我不确定您对 Wi-Fi 网络配置有多少控制权),或使用其他机制让两个设备相互发现。


你的话帮了我大忙,我按照你的建议成功地构建了一个客户端-服务器应用程序,我使用了 GCDAsyncSocket... 但是我又遇到了另一个问题 :( - Husam
监听设备无法在后台读取接收到的数据,直到它转为前台状态。换句话说,代理在后台模式下被冻结了。我想要读取在后台接收到的数据,以便显示包含“显示应用程序”按钮的本地通知。你有什么解决方法吗?谢谢。 - Husam
1
@Husam,我相信当你的iOS应用程序进入后台时,套接字会被关闭。既然你说这不是为了应用商店,你可以尝试这个解决方案。基本上,它让你的应用程序假装成一个voip应用程序,这将允许它在后台保持网络连接。我认为你可能需要添加一个后台任务才能使其正常工作...请参见提供的链接。或者,如果你能越狱手机,那么你可以将应用程序构建为启动守护程序 - Nate
我找到了一个简单的解决方案......我将从Cydia安装Backgrounder来保持应用程序在后台运行。谢谢,你为我做了一个巨大的忙。 - Husam
@Husam,太好了。我很高兴它能正常工作。如果你越狱了iPhone,你肯定可以做很多很棒的事情! - Nate

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