I have made a multiplayer game using the GameKit Framework where 2 iPhones/iPods can connect to each other via bluetooth and play.
I am thinking of a way to choose which device will be able to play first. So the logical solution is to pick the host of the connection. Is there even a server and a client in the GKSession? Are they all peers? Which route shall I take to achieve what I need?
Basically, it is up to you to configure your session as you like.
From the Apple documentation:
Sessions discover other peers on the
network based on a session mode which
is set when the session is
initialized. Your application can
configure the session to be a server,
which advertises a service type on the
network; a client, which searches for
advertising servers; or a peer, which
advertises like a server and searches
like a client simultaneously.
A copy of your application acting as a
server initializes the session by
calling
initWithSessionID:displayName:sessionMode:
with a session mode of either
GKSessionModeServer or
GKSessionModePeer. After the
application configures the session, it
advertises the service by setting the
session’s isAvailable property to YES.
A copy of your application acting as a
client initializes the session by
calling
initWithSessionID:displayName:sessionMode:
with a session mode of either
GKSessionModeClient or
GKSessionModePeer. After configuring
the session, your application searches
the network for advertising servers by
setting the session’s isAvailable
property to YES. If the session is
configured with the GKSessionModePeer
session mode it also advertises itself
as a server, as described above.
Therefore, if you use GKSessionModePeer to initialize the session, you have peers (acting both as server and client). If you want to distinguish a server from its clients, initialize it with GKSessionModeServer.
Kind regards.