> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PartyDirectPeerConnectivityOptions

> 控制在网络中的设备之间尝试使用直接对等连接的标志。

控制在网络中的设备之间尝试使用直接对等连接的标志。

## Syntax

```cpp theme={null}
enum class PartyDirectPeerConnectivityOptions  : int32_t  
{  
    None = 0x0,  
    SamePlatformType = 0x1,  
    DifferentPlatformType = 0x2,  
    AnyPlatformType = SamePlatformType | DifferentPlatformType,  
    SameEntityLoginProvider = 0x4,  
    DifferentEntityLoginProvider = 0x8,  
    AnyEntityLoginProvider = SameEntityLoginProvider | DifferentEntityLoginProvider,  
    OnlyServers = 0x10,  
}  
```

## Constants

| Constant                     | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |                                     |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------- |
| None                         | 未指定任何标志。<br /><br /> 缺少标志意味着不允许进行任何直接对等连接尝试。设备之间的所有终结点消息和聊天数据将始终通过透明云中继服务器传输，且永远不会交换任何 IP 地址信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |                                     |
| SamePlatformType             | 可能会在具有相同平台类型的设备之间尝试直接对等连接。<br /><br /> 如果一对设备被识别为具有相同类型的硬件和/或 OS 平台（例如 Windows PC、XBOX 游戏主机、基于 iOS 的移动设备）且都与它们所使用的特定 Party 库关联，则它们将尝试建立直接对等连接。<br /><br /> 请注意，此标志本身不允许进行任何直接对等连接尝试。它必须与 `SameEntityLoginProvider` 和 `DifferentEntityLoginProvider` 标志中的一个或两个组合使用。   <br /><br /> 在 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中，此标志不能与 `OnlyServers` 标志组合使用。它可作为 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption) 值的一部分与 `OnlyServers` 组合使用。                                                                                                                                                                                                                                                |                                     |
| DifferentPlatformType        | 可能会在具有不同平台类型的设备之间尝试直接对等连接。<br /><br /> 如果一对设备被识别为具有不同类型的硬件和/或 OS 平台（例如 Windows PC、XBOX 游戏主机、基于 iOS 的移动设备）且与每台设备所使用的特定 Party 库关联，则它们将尝试建立直接对等连接。<br /><br /> 请注意，此标志本身不允许进行任何直接对等连接尝试。它必须与 `SameEntityLoginProvider` 和 `DifferentEntityLoginProvider` 标志中的一个或两个组合使用。   <br /><br /> 在 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中，此标志不能与 `OnlyServers` 标志组合使用。它可作为 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption) 值的一部分与 `OnlyServers` 组合使用。                                                                                                                                                                                                                                               |                                     |
| AnyPlatformType              | 无论设备的平台类型如何，都可能尝试在它们之间进行直接对等连接。<br /><br /> 此标志等效于 \`\`\`SamePlatformType                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | DifferentPlatformType\`\`\`。        |
| SameEntityLoginProvider      | 可能会在拥有使用相同提供程序登录的已通过身份验证的用户 PlayFab Entity ID 的设备之间尝试直接对等连接。<br /><br /> 正在将本地用户初始身份验证进入网络的设备将尝试与至少拥有一个使用与新身份验证用户相同提供程序（例如 XBOX Live、Facebook、iOS、Google）登录的已通过身份验证的用户 PlayFab Entity ID 的远程设备建立直接对等连接。<br /><br /> 请注意，此标志本身不允许进行任何直接对等连接尝试。它必须与 `SamePlatformType` 和 `DifferentPlatformType` 标志中的一个或两个组合使用。   <br /><br /> 在 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中，此标志不能与 `OnlyServers` 标志组合使用。它可作为 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption) 值的一部分与 `OnlyServers` 组合使用。<br /><br />                                                                                                                                                                                         |                                     |
| DifferentEntityLoginProvider | 可能会在拥有使用不同提供程序登录的已通过身份验证的用户 PlayFab Entity ID 的设备之间尝试直接对等连接。<br /><br /> 正在将本地用户初始身份验证进入网络的设备将尝试与不拥有任何使用与新身份验证用户相同提供程序（例如 XBOX Live、Facebook、iOS、Google）登录的已通过身份验证的用户 PlayFab Entity ID 的远程设备建立直接对等连接。<br /><br /> 请注意，此标志本身不允许进行任何直接对等连接尝试。它必须与 `SamePlatformType` 和 `DifferentPlatformType` 标志中的一个或两个组合使用。   <br /><br /> 在 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中，此标志不能与 `OnlyServers` 标志组合使用。它可作为 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption) 值的一部分与 `OnlyServers` 组合使用。                                                                                                                                                                                                      |                                     |
| AnyEntityLoginProvider       | 无论用于登录已通过身份验证的用户 PlayFab Entity ID 的提供程序如何，都可能尝试在设备之间进行直接对等连接。<br /><br /> 此标志等效于 \`\`\`SameEntityLoginProvider                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | DifferentEntityLoginProvider\`\`\`。 |
| OnlyServers                  | 如果至少一台设备拥有 PlayFab Entity 类型为 `game_server` 的已通过身份验证的用户，则可能会在设备之间尝试直接对等连接。<br /><br /> 正在将本地用户初始身份验证进入网络的设备，如果本地用户或远程设备上的某个用户是 `game_server` PlayFab Entity 类型（如向 [PartyManager::CreateLocalUserWithEntityType()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_createlocaluserwithentitytype) 指定的那样），将尝试与远程设备建立直接对等连接。换言之，玩家的设备之间永远不会直接连接，仅会连接到服务器设备。服务器设备会尝试直接连接到所有玩家设备和其他服务器设备。<br /><br /> 在 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中，此标志不能与 `SamePlatformType`、`DifferentPlatformType`、`SameEntityLoginProvider` 或 `DifferentEntityLoginProvider` 标志中的任何一个组合使用。它可作为 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption) 值的一部分与这些标志组合使用。 |                                     |

## Remarks

作为将初始用户成功身份验证进入网络的一部分，设备在网络的 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中声明的这些标志允许时，可能会尝试与已参与该网络的其他设备建立直接对等连接。对于成功的尝试，设备之间的终结点消息和聊天数据将使用这些直接连接传输。对于因设备之间的环境不兼容而失败的尝试，这些设备之间的所有通信将改为通过透明云中继服务器传输。如果这些标志不允许设备尝试直接对等连接，则它们永远不会交换 IP 地址信息，并且将始终通过透明云中继服务器传输终结点消息和聊天数据。<br /><br /> 你可以通过调用 [PartyNetwork::GetDeviceConnectionType()](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype) 来确定本地设备是否实际建立了与特定远程设备的直接对等连接。   <br /><br /> 成功的直接对等连接可能会降低某些设备之间的延迟，但尝试建立此类连接也要求用户向他人披露其设备的 IP 地址，这可能引发隐私方面的担忧，或使恶意用户可能在游戏之外攻击对等设备及其 Internet 连接。此外，出于策略原因，某些平台上可能不允许直接对等连接。请务必使用适合你的性能和安全目标的标志。   <br /><br /> 除了特定网络的 [PartyNetworkConfiguration::directPeerConnectivityOptions](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 值之外，设备可选择通过使用 [PartyManager::SetOption()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption) 设置 [PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption)，进一步约束其进行身份验证的所有网络的这些标志。所有标志均使用按位 AND 运算进行评估。也就是说，只有当特定标志在三处均已启用时，它才会对给定网络的一对设备生效：网络的 [PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration) 结构中，以及两台设备各自的本地掩码选项中。即使 Party 网络允许相关形式的直接对等连接，任一设备也可通过不启用该标志单方面选择退出彼此之间的 IP 地址披露和直接连接尝试。[PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption) 值默认允许网络启用的所有直接对等连接，因此仅当你有设备特定的要求以阻止部分或全部涉及该设备的直接对等连接时，才需要配置它。   <br /><br /> 为避免过度消耗资源，即使这些标志允许，Party 库也会在内部阻止任何给定设备在其当前参与的所有网络中尝试建立超过配置的最大数量的直接对等连接。这不会影响设备参与更多远程设备的大型或多个网络的能力。与额外设备的通信将简单地通过透明云中继服务器传输。若要修改直接对等连接的最大数量，请使用 [PartyManager::SetOption()](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption) 设置 [PartyOption::LocalDeviceMaxDirectPeerConnections](/services/playfab/multiplayer/networking/reference/enums/partyoption)。   <br /><br /> 建议不要主动强制要求任何给定设备对之间必须存在直接对等连接（即，如果 [PartyNetwork::GetDeviceConnectionType()](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_getdeviceconnectiontype) 报告的值不是 [PartyDeviceConnectionType::DirectPeerConnection](/services/playfab/multiplayer/networking/reference/enums/partydeviceconnectiontype)，请不要调用 [PartyNetwork::LeaveNetwork()](/services/playfab/multiplayer/networking/reference/classes/PartyNetwork/methods/partynetwork_leavenetwork)），因为所使用的特定底层传输方式不会改变整体逻辑通信能力。如果游戏设计对最大消息延迟有严格要求，从而鼓励使用直接对等连接，最好根据 [PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds](/services/playfab/multiplayer/networking/reference/enums/partyendpointstatistic) 统计信息所报告的当前对该延迟的具体观察结果采取行动，而不是基于传输机制做出抽象假设。否则，你可能会持续妨碍尝试与同一群朋友一起游戏的用户，而这些朋友因超出他们控制范围的环境因素，始终需要使用附近的透明云中继服务器。

## Requirements

**Header:** Party.h

## See also

[Party members](/services/playfab/multiplayer/networking/reference/party_members)\
[PartyNetworkConfiguration](/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration)\
[PartyOption::LocalDeviceDirectPeerConnectivityOptionsMask](/services/playfab/multiplayer/networking/reference/enums/partyoption)\
[PartyManager::SetOption](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setoption)\
[PartyEndpointStatistic::AverageDeviceRoundTripLatencyInMilliseconds](/services/playfab/multiplayer/networking/reference/enums/partyendpointstatistic)\
[PartyLocalEndpoint::GetEndpointStatistics](/services/playfab/multiplayer/networking/reference/classes/PartyLocalEndpoint/methods/partylocalendpoint_getendpointstatistics)


## Related topics

- [PartyOption](/zh-CN/services/playfab/multiplayer/networking/reference/enums/partyoption.md)
- [PartyNetworkConfiguration](/zh-CN/services/playfab/multiplayer/networking/reference/structs/partynetworkconfiguration.md)
- [PlayFab Party 发行说明](/zh-CN/services/playfab/multiplayer/networking/release-notes.md)
- [Party C/C++ API 概述](/zh-CN/services/playfab/multiplayer/networking/reference/party_members.md)
- [DirectPeerConnectivityOptions](/zh-CN/services/playfab/multiplayer/networking/unity-party-api-reference/enums/partyunitydirectpeerconnectivityoptions.md)
