Platform SDK: DirectX

TCP/IP

TCP/IP (転送制御プロトコル/インターネット プロトコル) サービス プロバイダは、TCP/IP プロトコルを利用し、Windows Sockets を使用して、インターネットまたはローカル エリア ネットワーク (LAN) を介して通信する。このサービス プロバイダは、非保証メッセージングには UDP (User Datagram Protocol) パケットを使用し、保証メッセージングには TCP を使用する。1 台のコンピュータで、TCP/IPを使用して複数の DirectPlay セッションをホストすることができる。

アプリケーションがセッションを列挙すると、TCP/IP がダイアログ ボックスを表示して、セッションの IP アドレスをユーザーにたずねる。インターネット上のセッションの場合、ユーザーは参加するセッションをホストするコンピュータの IP アドレスを入力する必要がある。コンピュータが名前を持っている場合 (microsoft.com など)、その名前を IP アドレスの代わりに使用することができる。その場合、DirectPlay は DNS (Domain Name System) ルックアップを使用してその名前を検索する。また、ユーザーはアドレスを空のままにして [OK] をクリックすることもできる。その場合、DirectPlay はメッセージをブロードキャストしてセッションを検索する。この処理は、通常は LAN 上および同一サブネット上でのみ機能する。

[C++]

セッションをホストしている場合は、アプリケーションで IDirectPlay4::GetPlayerAddress を使用してローカル IP アドレスを取得することができる。

アプリケーションは、IDirectPlay4::InitializeConnection メソッドを使用するか、または IDirectPlayLobby3::SetConnectionSettings メソッドを使用してから IDirectPlayLobby3::Connect メソッドを呼び出すことにより、DirectPlay アドレスのサービス プロバイダに IP アドレスを提供することができる。アドレスは、null で終わる ANSI または Unicode 文字列でなければならない (それぞれ異なるデータ タイプ GUID を持つ)。セッションのブロードキャスト列挙が望ましい場合、アドレスは、長さ 0 の文字列、つまり null ターミネータだけからなる文字列でなければならない。詳細については、「DirectPlay アドレス」を参照すること。

TCP/IP サービス プロバイダは、ポート 47624 を使用して列挙要求を送受信する。通信は、ポート 2300 〜 2400 の間で送信される。ファイアウォールを通過して通信するには、すべてのコンピュータが DirectX 6.0 以降とポート 47624 を使用し、内向きと外向きの両方の TCP および UDP トラフィックに対してポート 2300 〜 2400 を空けておく必要がある。詳細については、「ファイアウォールのサポート」を参照すること。

 :  DirectPlay は、最初にポート 2300 を割り当て、以降のポートを順に割り当てる。開くポートの範囲が 2400 に満たない場合もある。

アプリケーションは、使用する特定のポートを選択することができる。そのためには、DPAID_INetPort というデータを含む DirectPlay アドレスを使用して TCP/IP サービス プロバイダを初期化する必要がある。詳細については、「DirectPlay アドレス」および「DirectPlay アドレスのデータ型」を参照すること。アプリケーションが使用する特定のポートを選択すると、すべての通信はそのポートを経由して送信される。この場合、TCP および UDP を使用した外向きおよび内向きの両方の通信に対して、そのポートを開くだけでよい。

TCP/IP サービス プロバイダの GUID は、DPSPGUID_TCPIP と定義されている。

[Visual Basic]

セッションをホストしている場合は、アプリケーションで DirectPlay4.GetPlayerAddress を使用してローカル IP アドレスを取得することができる。

アプリケーションは、DirectPlayLobby3.CreateINetAddress メソッドを使用して DirectPlay アドレスを作成することができる。作成したアドレスは、DirectPlayAddress オブジェクトを DirectPlay4.InitializeConnection メソッドに渡すか、またはそのオブジェクトを DirectPlayLobby3.SetConnectionSettings に渡してから DirectPlayLobby3.Connect を呼び出すことにより、サービス プロバイダに渡すことができる。詳細については、「DirectPlay アドレス」を参照すること。

DirectPlay ロビーのサポートを追加すると、ユーザーはゲームの開始時に IP アドレスを入力する必要がなくなる。詳細については、「同期起動」を参照すること。