- ブロッキング: XNetworkingQueryPreferredLocalUdpMultiplayerPort
- 非同期: XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync
- 通知ベース: XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged
INADDR_ANY/in6addr_any アドレスにバインドする必要があります。
ソケット障害の処理
返されたポートが、特定のサーバーやピアとの成功したソケット接続の確立に使用できるという保証はありません。通常のタイトルの再試行およびフォールバック ロジックを実行する必要があります。ソケットが閉じられて再度開かれるたびに、タイトルは、時間の経過とともにポートが変更される可能性があるため、最新の優先ローカル UDP マルチプレイヤー ポートを再度クエリする必要があります。ネットワーク初期化
XNetworkingQueryPreferredLocalUdpMultiplayerPort API の 3 つ (ブロッキング、非同期、通知ベース) のバリアントはすべて、タイトルの起動時および再開時にネットワークが初期化されるまで、完了/通知をブロックまたは遅延させます。ネットワーク初期化状態の検出 の概要に従って、別途ネットワーク初期化を待つこともできますし、これらの API を呼び出してそれらが戻るのを待つこともできます。
サスペンドと再開
他のソケットと同様に、優先ローカル UDP マルチプレイヤー ポートにバインドされたソケットは、サスペンド時に閉じ、ネットワーク初期化を待った後、再開時に再作成する必要があります。RegisterAppStateChangeNotification を介してサスペンドおよび再開イベントを登録する必要があります。再開時には、優先ローカル UDP マルチプレイヤー ポートが変更されていると想定し、優先ローカル UDP マルチプレイヤー ポートの変更をリスニングしているか、新しいソケットを作成するときに再度クエリする必要があります。WinSock のサスペンドと再開の処理に関する詳細については、Winsock のサスペンドと再開 を参照してください。
優先ローカル UDP マルチプレイヤー ポートの変更
タイトルは、XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged API を使用して、優先ローカル UDP マルチプレイヤー ポートの変更をリスニングできます。 タイトルの実行中に優先ローカル UDP マルチプレイヤー ポートが変更されないように、あらゆる試みが行われます。ただし、ユーザーの外部ネットワーク条件の変更により既存のソケット フローが無効化され、ポートが変更される避けられないケースもあります。特に ネットワーク接続レベル が変更された場合、またはタイトルのサスペンド/再開サイクルの一部として、ポートが変更される可能性が高くなります。 優先ローカル UDP マルチプレイヤー ポートが変更されると、将来のピアからの追加の受信接続が、以前の優先ポート上でブロックされる可能性があります。これはソケット層では障害を引き起こさない可能性があります。ただし、タイトルは最終的に、以前の優先ポートにバインドされたソケット上でパケットの受信を停止する可能性があります。 既存のピアとの間で送受信されるパケットは引き続き機能する場合があります。優先ローカル UDP マルチプレイヤー ポートの変更に関する通知は、進行中のゲーム セッションにとって致命的でない場合があります。 変更通知が発生した場合、タイトルは新しい優先ポートにバインドされた新しいソケットに移行する必要があります。この移行はできるだけ早い機会に、既存のゲームプレイを中断することなく行われる必要があります。接続の損失を検出し、ソケット接続を再試行するために、タイトルは常に最新の優先ポートを使用する必要があります。優先ローカル UDP マルチプレイヤー ポートの変更のテスト
優先ローカル UDP マルチプレイヤー ポートを変更するには、次の手順を使用します。- ゲームの実行中に、XBOX ガイド を開きます。設定 アプリに移動します。
- [全般] タブで [ネットワーク設定] を選択します。
- [詳細設定] を選択し、[代替ポートの選択] を選択します。
- ポートの選択を [手動] に設定します。ポートを選択するには、ドロップダウン メニューを使用します。
- ポートの選択は直ちに有効になり、タイトルへの対応する通知が発生します。
- テストが完了したら、ポートの選択を [自動] に戻して、ポートの動作を既定に戻します。
設定アプリを使用している間、タイトルは制約されますが依然として実行されており、タイトルが表示されていない場合でも、直ちにポート変更通知を受け取ります。設定アプリを開いた状態でタイトルに切り替えずに 10 分以上経過すると、タイトルはサスペンドされます。
セキュリティ
優先ローカル UDP マルチプレイヤー ポートにバインドされたソケットは、他のソケットと同じように動作します。特に、ソケット自体は追加のセキュリティを提供しません。タイトルは、コミュニケーション セキュリティのベスト プラクティスで規定されているように、優先ローカル UDP マルチプレイヤー ポートにバインドされたソケットの上に、独自のセキュアな通信プロトコルを使用する必要があります。詳細については、コミュニケーション セキュリティの概要 (NDA トピック) を参照してください。ピアツーピア
優先ローカル UDP マルチプレイヤー ポートは、ピアツーピア メッシュを構築できる最もよく知られたポートを提供します。ユーザーの NAT 層を通じて受信接続を許可する最良の方法で構成されています。ただし、次のような NAT トラバーサルを実行するのはタイトルの責任です。- NAT タイプの検出
- デバイスのパブリック IP アドレスとポートの検出と交換
- NAT パンチングとトラバーサル
