如何从iPhone中的客户端通过GameKit从蓝牙中识别主机

问题描述:

我使用GameKit框架制作了一款多人游戏,其中2部iPhone/iPod可以通过蓝牙连接到对方并播放。如何从iPhone中的客户端通过GameKit从蓝牙中识别主机

我想到了一种方法来选择哪个设备将能够首先播放。所以合乎逻辑的解决方案是选择连接的主机。 GKSession中是否还有服务器和客户端?他们都是同龄人吗?我应该采取哪条路线来实现我所需要的?

基本上,您可以根据自己的喜好配置会话。

从Apple文档:

会话发现在此基础上 在会话初始化 设置会话模式 网络上的其他同行。您的应用程序可将 配置为服务器, 在 网络上公布服务类型;一个客户端,它搜索 广告服务器;或同级,其中 像服务器一样通告并且同时像客户一样搜索 。

充当 服务器应用程序的副本中初始化 调用 initWithSessionID会话:显示名:sessionMode: 有两种 GKSessionModeServer或 GKSessionModePeer的会话模式。在 应用程序配置会话后, 通过将 会话的isAvailable属性设置为YES来通告该服务。

充当 客户端应用程序的副本中初始化 调用 initWithSessionID会话:显示名:sessionMode: 有两种 GKSessionModeClient或 GKSessionModePeer的会话模式。在配置 会话后,您的应用程序通过 搜索 广告服务器的网络,将会话的isAvailable 属性设置为YES。如果使用GKSessionModePeer 会话模式配置的会话为 ,则会将其本身作为服务器通告为 ,如上所述。

因此,如果您使用GKSessionModePeer来初始化会话,您有对等体(同时作为服务器和客户机)。如果您想要将服务器与客户端区分开来,请使用GKSessionModeServer对其进行初始化。

亲切的问候。

+0

但由于它是一个应用程序,在我的代码中,我将不得不做出决定:服务器或客户端。这虽然不起作用。我需要一个应用程序实例作为服务器,另一个作为客户端。 或者只是找到其他方法来选择哪个播放器将首先播放... – Dimitris 2009-06-24 15:42:04