Microsoft DirectX 8.0 (C++)

ピアツーピア セッションへの接続

セッション ホストでない限り、プレーヤーをセッションに接続する必要がある。これには、セッション ホストのアドレスが必要になる。アプリケーションがロビー クライアントから接続されている場合は、IDirectPlay8LobbiedApplication::GetConnectionSettings を呼び出せば、ホストのアドレスを取得できる。ホストのアドレスは、利用可能なホストを列挙して取得することもできる。列挙から返される情報には、各ホストのアドレスと、関連するセッションを記述する DPN_APPLICATION_DESC 構造体が含まれる。

セッションへの参加を要求するには、IDirectPlay8Peer::SetPeerInfo を呼び出してプレーヤー名を設定してから、選択されたホストのアドレスを指定して IDirectPlay8Peer::Connect を呼び出すことによりセッションに接続する。

プレーヤーがセッションへの参加を試みると、ホストに DPN_MSGID_INDICATE_CONNECT メッセージが届く。プレーヤーの参加を許可する場合は、S_OK を返す。要求を拒否する場合は、それ以外の値を返す。どちらの場合も、プレーヤーには応答が入った DPN_MSGID_CONNECT_COMPLETE メッセージが届く。ホストが接続を受け付けた場合は、関連する構造体の hResultCode メンバが S_OK に設定される。拒否した場合は、hResultCode が DPNERR_HOSTREJECTEDCONNECTION に設定される。

DPN_MSGID_INDICATE_CONNECT メッセージが届いたら、ホストはプレーヤー コンテキスト値を定義できる。ただし、プレーヤー ID はまだ定義されない。プレーヤー コンテキスト値は、プレーヤー ID が入った DPN_MSGID_CREATE_PLAYER メッセージを受信してからでも定義できる。一般のプレーヤーに DPN_MSGID_INDICATE_CONNECT メッセージが届くことはない。

新しいプレーヤーが接続されると、ホストを含むセッション メンバ全員に、新しいプレーヤーを公表する DPN_MSGID_CREATE_PLAYER メッセージが届く。メッセージに関連付けられた構造体には、プレーヤーへのメッセージ送信に使用するプレーヤー ID が格納されている。ホスト以外のピアでは、このメッセージを処理するときに、プレーヤー コンテキスト値を定義する必要がある。ピアまたはホストがこのメッセージの処理から復帰すると、そのプレーヤー コンテキスト値がセッション用に設定され、変更できなくなる。プレーヤー コンテキスト値の詳細については、「プレーヤー コンテキスト値の使い方」を参照すること。