次の方法で共有


PartyManager::ConnectToNetwork

ネットワークへの接続の非同期試行をキューに入れます。

構文

PartyError ConnectToNetwork(  
    const PartyNetworkDescriptor* networkDescriptor,  
    void* asyncIdentifier,  
    PartyNetwork** network  
)  

パラメーター

networkDescriptor PartyNetworkDescriptor*

接続が確立されるネットワークに関連付けられた記述子。

asyncIdentifier void*
オプション

完了状態の変更をこの呼び出しに関連付けるために使用できる、オプションの、アプリによって定義されたポインター サイズのコンテキスト値。

network PartyNetwork**
オプションで割り当てられたライブラリの出力

オプションの出力ネットワーク オブジェクト。

戻り値

PartyError

c_partyErrorSuccess新しいネットワークを接続する非同期操作が開始されるか、エラー コードが発生した場合。 このメソッドが失敗した場合、関連する状態の変更は発生しません。 人間が判読できる形式のエラー コードは、GetErrorMessage() を介して取得できます。

解説

このメソッドは、ローカル デバイスから透過的なクラウド リレー サーバーへの安全な DTLS 接続をネゴシエートして確立することにより、networkDescriptor に関連付けられたネットワークへの非同期接続の試行をキューに入れます。 PartyConnectToNetworkCompletedStateChange は、非同期操作の完了時に、成功または失敗を示します。 成功すると、ローカル デバイスは透過的なクラウド リレー サーバーへの接続を確立します。 失敗すると、PartyNetworkDestroyedStateChange が生成されます。 少なくとも 1 人のローカル ユーザーが PartyNetwork::AuthenticateLocalUser() を介して正常に認証されるまで、他のデバイスは表示されず、ローカル デバイスはどのリモート デバイスにも表示されません。

デバイスがネットワークに正常に接続した後、PartyNetwork::AuthenticateLocalUser() を介してネットワークに認証する必要があります。 デバイスがネットワークに接続されているが、1 分以上認証されていない場合、デバイスは切断され、PartyNetworkDestroyedStateChange が生成されます。 これは、PartyNetwork::RemoveLocalUser() を呼び出した後、デバイスが認証されなかったか、認証を失ったかに関係なく発生します。

このメソッドは、オプションで、PartyNetwork::CreateInvitation()PartyNetwork::CreateEndpoint() などの非同期ネットワーク操作を実行するためにすぐに使用できる出力として network を提供します。 これらの非同期操作は、接続が完了するまで内部でキューに入れられ、接続が完了すると処理されます。 この network は、結果の PartyConnectToNetworkCompletedStateChange でも提供され、完全に接続され、提供された asyncIdentifier に関連付けられます。

この操作は、CreateNewNetwork() を介して作成されたときネットワークの構成で指定されたネットワークの接続デバイスの制限に達した場合、PartyConnectToNetworkCompletedStateChange::resultPartyStateChangeResult::NetworkLimitReached に設定して非同期に失敗します。

正常に返されると、このメソッドは、以前に GetNetworks() によって返された配列のメモリを無効化し、新しいネットワークを同期して配列に追加します。 StartProcessingStateChanges() でも、配列のメモリを無効化します。 返された network オブジェクトは、 PartyNetworkDestroyedStateChange が生成され、オブジェクトを参照するすべての状態変化が FinishProcessingStateChanges() に返されるまで有効になります。

失敗時の再試行

ConnectToNetwork() が非同期に失敗した場合、StartProcessingStateChanges() が結果を示すことにより PartyConnectToNetworkCompletedStateChange が指定されます。 指定された PartyStateChangeResult に応じて、操作が遅れて再試行される場合があります。

結果 再試行の動作
InternetConnectivityError 10 秒以上の小さな遅延で再試行します。 お使いのアプリでは、自動的に再試行するのではなく、すぐにユーザーにエラーを表示する方が適切な場合があります。
NetworkLimitReached 自動的に再試行しないでください。 代わりに、ユーザーにメッセージを表示し、ユーザーが次の試行を開始するまで待機します。
NetworkNoLongerExists 再試行しないでください。
VersionMismatch 再試行しないでください。
FailedToBindToLocalUdpSocket この結果は、PartyOption::LocalUdpSocketBindAddress オプションで指定されたローカル UDP ソケットにライブラリがバインドできなかったことを意味します。 タイトルは、ライブラリのインスタンスをクリーンアップし、PartyOption::LocalUdpSocketBindAddress オプションを有効で、アドレスをバインドでき、ライブラリを再初期化するよう更新します。

要件

ヘッダー: Party.h

関連項目

PartyManager
PartyConnectToNetworkCompletedStateChange
PartyNetworkDestroyedStateChange
PartyNetworkConfiguration
PartyManager::CreateNewNetwork
PartyManager::GetNetworks
PartyNetwork::AuthenticateLocalUser
PartyNetwork::RemoveLocalUser
PartyNetwork::CreateInvitation
PartyNetwork::RevokeInvitation
PartyNetwork::CreateEndpoint
PartyNetwork::LeaveNetwork