如何在 iOS 和 Android 之间为游戏进行通信 [关闭]
Posted
技术标签:
【中文标题】如何在 iOS 和 Android 之间为游戏进行通信 [关闭]【英文标题】:How to communicate between iOS and Android for a game [closed] 【发布时间】:2015-10-21 15:20:54 【问题描述】:我阅读了几篇帖子,但要么他们没有回答我的问题,要么太老了。 假设我想开发一个纸牌游戏应用程序,我需要设备在它们之间即时进行通信。我也只需要一个本地连接。人们会在同一个房间里玩耍。
那么,将所有这些设备(ios、android 和平板电脑/智能手机)组合在一起的选项是什么? WIFI、蓝牙、其他……
非常感谢
【问题讨论】:
【参考方案1】:如果每个人都在使用 WiFi,那么使用套接字,因为它是最简单的。蓝牙需要近距离,所以不理想。
您将有两个方面需要解决:
1) 寻找网络上的其他玩家
为此,我将使用 UDP 消息。让您的应用在众所周知的端口上打开一个 UDP 套接字并将其注册到运行循环中。在寻找其他玩家时,并且可能定期在计时器上,让您的应用程序向网络广播地址和您的游戏端口发送一个 UDP AnybodyOutThere 类型的消息。在此消息中,对玩家信息和您想要使用的任何其他内容进行编码。
如果您希望为您的应用创建一个多播组并将其发送到该组。
当您的应用收到 UDP AnybodyOutThere 消息时,对其进行处理,然后将 ImHere 类型的消息直接发送给发送者并记录其 IP 地址。
当您的应用收到 UDP ImHere 类型消息时,将播放器添加到您的内部播放器列表并记录其 IP 地址。
通过此操作,您的所有设备都将快速了解谁在玩游戏。
2) 在游戏过程中设备之间的通信。
为了可靠性,您可能希望在这部分使用 TCP/IP 套接字。让您的应用在众所周知的端口(不同于您的 UDP 端口)上打开 TCP 侦听套接字。您实际上可以使用任何端口,只要您在步骤 1) 的 UDP 发现消息中包含该端口。
要请求玩家加入您在一台设备上托管的游戏,请让该设备通过 UDP 直接向所选玩家发送邀请。如果他们选择加入,让他们的设备使用 TCP 套接字连接到设备正在侦听的端口上的托管设备。您现在有任何加入的玩家可靠地连接到您的托管设备。
剩下的就是你创建一个协议来管理游戏所需的交互了。
【讨论】:
谢谢大家的回答。关键是有了WIFI,我确定通讯会即时吗?毫不拖延。我的意思是,如果玩家按下他/她智能手机上的按钮,我需要立即在所有其他设备上执行操作,例如最多几毫秒。我认为 WIFI 可能不是 100% 可靠的。 @yoan26 如果你使用 TCP,那么只要你们都保持连接,消息传递就是可靠的。您可以检测断开连接并重新连接。速度取决于您的 WiFi,但您所说的 Mbps 远远超出您的需要。 感谢您提供的信息!所以看来我应该为我的多操作系统应用程序使用带套接字的 WIFI。【参考方案2】:实现这一点的最佳方法是使用套接字。您可以在一台设备上打开一个 TCP 套接字,其他设备可以监听此套接字。然后,您可以使用 JSON 将消息从一台设备发送到另一台设备。对于套接字,您可以使用 iOS 和 Android 中的本机套接字,或者您可以寻找类似 Socket.IO 的库
【讨论】:
以上是关于如何在 iOS 和 Android 之间为游戏进行通信 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章