> ## 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.

# PlayFab Party 端口使用情况和防火墙要求

> PlayFab Party 用于实时语音聊天、文字聊天和数据通信流量所需的网络端口和防火墙规则参考。

# PlayFab Party 端口使用情况、防火墙以及数据包大小要求

本主题详细介绍启用聊天和数据通信所需的 PlayFab Party 端口使用情况、防火墙以及数据包大小要求。

## 通信模式

PlayFab Party 使用两种通信模式:

1. HTTPS 通信,由 API 调用方发起,连接到多个云 Web 服务,包括 *playfabapi.com*。

2. 基于 UDP 套接字的与透明云中继服务器以及其他对等设备(如果支持)之间的安全通信。

如果任一模式被阻止,早期的 PlayFab Party API 操作或自动通知(例如初始的 [`PartyRegionsChangedStateChange`](/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange))将报告 [`PartyStateChangeResult::InternetConnectivityError`](/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult)。

对于 Web 服务请求问题,Party 之外的其他必要的 PlayFab 和平台操作(例如用户登录功能)也可能失败。这些失败通常是由于对 HTTPS 连接的本地防火墙限制或代理要求造成的。大多数问题可以通过启用从本地设备或网络到云 Web 服务的直接出站 HTTPS 通信来解决。

## HTTPS 域名

Microsoft PlayFab Party 与多个云服务执行 UDP 和 HTTPS 连接。为确保正确的功能,基于域名过滤 HTTPS 流量的环境需要确保可以访问以下名称或名称模式:

HTTPS 连接:

* *\*.playfabapi.com*
* *\*.speech.microsoft.com*
* *api.cognitive.microsofttranslator.com*

此域名列表可能会在不通知的情况下更改。请定期查看此列表并预期会有变化。

## MTU 和数据包大小

PlayFab Party 会自动执行分片和重组,以使大型应用程序消息适应环境的数据包大小限制。尽管有此功能,某些网络环境仍可能导致通信失败。

PlayFab Party 目前期望环境支持至少 1,419 字节的最大传输单元(MTU)大小,以避免性能不佳或潜在的连接失败。此 MTU 大小在典型环境中受支持。虚拟专用网络(VPN)、IPv4/IPv6 隧道或显式管理配置可能会在 Party 客户端、服务或其他客户端之间网络路径的一个或两个方向上减小 MTU 大小。

如果在给定环境中支持的端到端 MTU 不足,[`PartyManager::ConnectToNetwork`](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_connecttonetwork) 操作可能会因 [`PartyStateChangeResult::InternetConnectivityError`](/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult) 而失败。或者,连接可能成功,但设备可能会遇到不必要的延迟、数据包丢失或意外断开连接。

某些平台为最终用户、开发者或互联网服务提供商提供工具,用于帮助排查其环境中的 MTU 配置问题,应尽可能使用这些工具。

## 本地设备 UDP 端口使用情况

默认情况下,在大多数平台上,PlayFab Party 库将其 UDP 套接字绑定到操作系统动态分配的可用本地端口。Microsoft Game Core 是一个例外,PlayFab Party 默认绑定到该平台的“首选本地 UDP 多人游戏端口”。

在调用 [`PartyManager::Initialize()`](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_initialize) 之前,通过设置 [`PartyOption::LocalUdpSocketBindAddress`](/services/playfab/multiplayer/networking/reference/enums/partyoption) 选项,游戏可以改变此行为,将套接字绑定到特定的本地端口号,或绑定到除 Microsoft Game Core 的“首选本地 UDP 多人游戏端口”之外的、操作系统选择的可用端口。如果请求的端口已被你的游戏或设备上的另一个应用程序使用,则要么 [`PartyManager::Initialize()`](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_initialize) 会立即报告错误,要么初始 [`PartyRegionsChangedStateChange`](/services/playfab/multiplayer/networking/reference/structs/partyregionschangedstatechange) 将报告 [`PartyStateChangeResult::FailedToBindToLocalUdpSocket`](/services/playfab/multiplayer/networking/reference/enums/partystatechangeresult) 错误,并且异步网络创建或连接操作将失败。

建议游戏使用默认的本地端口选择行为以获得最大的、无需配置的兼容性,除非因环境特定原因由最终用户请求。如果你的游戏使用非默认值,则可能有更多的平台特定要求。你应查阅每个平台的文档以获取端口使用指南。

PlayFab Party 通信始终要求允许出站发起的数据包及其后续回复从此选定的本地 UDP 端口发送到下一节中描述的远程目的地。网络管理员应遵循 Internet 标准的防火墙和网络地址转换(NAT)最佳实践,例如 [RFC 4787 - “Network Address Translation (NAT) Behavioral Requirements for Unicast UDP”](https://datatracker.ietf.org/doc/html/rfc4787),以获得最大兼容性。对于为 Party 网络使用直接点对点连接的游戏,这些最佳实践尤为重要,因为在支持有限的环境中可能允许连接到网络,但会阻止从一台设备到另一台设备建立直接通信。

## 远程 IP 地址和 UDP 端口

Microsoft PlayFab Party 跨多个区域提供动态扩展的服务,为用户提供最佳延迟。这意味着没有永久的远程目的地主机名、IP 地址或端口可供有严格通信约束需求的网络管理员参考。

Microsoft 每周提供 Azure 的 IP 地址范围列表更新,[可供下载](https://www.microsoft.com/download/details.aspx?id=56519)。如果可以实施持续同步的策略以限制本地网络流量,则此列表可能有用。在大多数情况下,持续维护此列表是一项挑战,并且容易出现细微的连接失败。此外,对于 Party 网络内的直接点对点连接,还必须知道并启用远程客户端 IP 地址的连接。出于这些原因,我们建议防火墙不限制远程 IP 地址连接。

PlayFab Party 可能使用的支持远程端口范围可以是除 Internet Assigned Numbers Authority (IANA) 保留范围 0-1023 之外的任何端口。目前透明云中继仅会分配 30000-65535 范围的端口号,但 Microsoft 保留将来更改此行为的权利。作为最佳实践,应使用 1024-65535 的端口范围。这对于为 Party 网络使用直接点对点连接的游戏尤为重要,因为 NAT 实现通常从此范围分配端口。阻止推荐范围以外的远程端口也可能会阻止直接通信。

要启用 UDP 连接,基于域名过滤 UDP 流量的环境需要确保可以访问以下名称或名称模式:

* *\*.cloudapp.azure.com*

通过域名解析过滤远程 UDP 连接的 IP 地址是可能的,但强烈不建议这样做。目前,所有到透明云中继服务器的连接都解析形式为 *\*.cloudapp.azure.com* 的名称,但此模式可能会在不通知的情况下更改。将 UDP 连接限制为仅通过名称解析的 IP 地址还会阻止直接点对点连接。

## 另请参阅

[PlayFab Party 和直接点对点连接](/services/playfab/multiplayer/networking/concepts-direct-peer-connectivity)


## Related topics

- [PC 端口行为](/zh-CN/build/console-features/networking/game-mesh/pc-port-behavior.md)
- [XBOX Tools Framework](/zh-CN/reference/tools/xtf/atoc-xbox-tools-framework.md)
- [XBOX 主机端口行为](/zh-CN/build/console-features/networking/game-mesh/xbox-console-port-behavior.md)
- [将客户端连接到游戏服务器](/zh-CN/services/playfab/multiplayer/servers/connecting-clients-to-game-servers.md)
- [GDK 中的 Windows Sockets 简介](/zh-CN/build/console-features/networking/game-mesh/winsock-intro-networking.md)
