다음을 통해 공유


PartyManager::ConnectToNetwork

네트워크에 연결하려는 비동기 시도를 큐에 넣습니다.

구문

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

매개 변수

networkDescriptorPartyNetworkDescriptor*

연결을 설정할 네트워크와 연관된 설명자입니다.

asyncIdentifier void*
선택 사항

완료 상태 변경을 이 호출과 연결하는 데 사용할 수 있는 선택적 앱 정의 포인터 크기의 컨텍스트 값입니다.

networkPartyNetwork**
선택적 라이브러리 할당 출력

선택적인 출력 네트워크 개체입니다.

반환 값

PartyError

c_partyErrorSuccess 새 네트워크에 연결하는 비동기 작업이 시작되었거나 오류 코드가 발생한 경우입니다. 이 메서드가 실패하면 관련 상태 변경 내용이 생성되지 않습니다. 사용자가 읽을 수 있는 형식의 오류 코드는 GetErrorMessage()를 통해 검색할 수 있습니다.

비고

이 메서드는 로컬 디바이스에서 투명한 클라우드 릴레이 서버로의 보안 DTLS 연결을 협상하고 설정하여 networkDescriptor과(와) 관련된 네트워크에 연결하려는 비동기 시도를 큐에 넣습니다. 비동기 작업이 완료되면 성공 또는 실패를 나타내는 PartyConnectToNetworkCompletedStateChange가 제공됩니다. 성공 시 로컬 디바이스는 투명한 클라우드 릴레이 서버에 대한 연결을 설정합니다. 실패 시 PartyNetworkDestroyedStateChange가 생성됩니다. 하나 이상의 로컬 사용자가 PartyNetwork::AuthenticateLocalUser()를 통해 인증될 때까지 다른 디바이스는 표시되지 않으며 로컬 디바이스는 원격 디바이스에 표시되지 않습니다.

디바이스가 네트워크에 성공적으로 연결되면 PartyNetwork::AuthenticateLocalUser()를 통해 네트워크에 인증해야 합니다. 디바이스가 네트워크에 연결되어 있지만 1분 이상 인증되지 않은 경우 디바이스의 연결이 끊어지고 PartyNetworkDestroyedStateChange가 생성됩니다. 이는 PartyNetwork::RemoveLocalUser()를 호출한 후 디바이스가 인증되지 않았거나 인증이 손실되지 않았는지에 관계없이 발생합니다.

이 메서드는 PartyNetwork::CreateInvitation()PartyNetwork::CreateEndpoint()와 같은 비동기 네트워크 작업을 수행하는 데 즉시 사용할 수 있는 출력으로 network을(를) 선택적으로 제공합니다. 이러한 비동기 작업은 연결이 완료될 때까지 내부적으로 큐에 대기되며, 완료 시점에 처리됩니다. 이 network은(는) 제공된 PartyConnectToNetworkCompletedStateChange에서 제공되며, 제공된 asyncIdentifier에 완전히 연결됩니다.

이 작업은 CreateNewNetwork()를 통해 생성되었을 때 네트워크 구성에 지정된 대로 네트워크에 연결된 장치의 한계에 도달한 경우 PartyStateChangeResult::NetworkLimitReached에 지정된 PartyConnectToNetworkCompletedStateChange::result와 비동기적으로 실패합니다.

반환이 성공적이면 이 메서드는 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