XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult

XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync 调用获取结果。

语法

HRESULT XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult(
         XAsyncBlock* asyncBlock,
         uint16_t* preferredLocalUdpMultiplayerPort
)

参数

asyncBlock _Inout_
类型:XAsyncBlock*

指向传递到 XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync 函数的 XAsyncBlock 结构的指针。

preferredLocalUdpMultiplayerPort _Out_
类型:uint16_t*

指向按主机 endian 顺序排列的首选本地用户数据报协议 (UDP) 端口号的指针。

返回值

类型:HRESULT

HRESULT 成功或错误代码。

备注

此函数将在 XAsyncBlock 结构被传递给 NetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult 函数时,获取异步多人游戏流量的首选本地 UDP 端口号。 有关正在检索的首选本地 UDP 多人游戏端口的详细信息,请参阅首选本地用户数据报协议 (UDP) 多人游戏端口网络 API。 有关 Microsoft 游戏开发工具包(GDK)的网络信息,请参阅检索网络信息

返回的首选本地 UDP 多人游戏端口是在后续套接字绑定 操作中使用的本地端口;这与远程设备可能用于连接到本地设备的公用端口相反。 该端口仅对于 UDP 流量而不是 TCP 或 HTTP 流量有意义,因为它专门面向多人、实时游戏网络流量。

此端口默认为 UDP 3074,但存在自动回退(当确定该端口不适合于游戏流量时)和手动覆盖(用户可通过 Xbox 网络设置疑难解答来设置)。 此端口的网络行为用于驱动严格、中等和开放的用户可见的 NAT 类型。 该端口由 Xbox 群聊天、Xbox 网络疑难解答、在线 Xbox Live 疑难解答文档和 CSS 疑难解答流使用,并且通常由用户在家庭路由器中手动配置。

返回的端口将已通过 UPnP 在用户的家庭路由器中配置,以便允许传入和传出数据包。

应该将该端口视作和其他每个端口一样,并应将它与 Windows 套接字 (Winsock) API 配合使用。 游戏应该绑定到该端口上的 IPv4 和 IPv6 或使用双堆栈套接字,并且应该绑定到 INADDR_ANY/in6addr_any 地址。

注意

从该函数采用主机 endian 顺序返回该端口。 sockaddr_in::sin_portsockaddr_in6::sin6_port 字段均采样 endian 顺序。 htons 函数应该用于在其传递到绑定函数时转换返回的端口的字节顺序。

不保证返回的端口能够用于建立与所需服务器或对等方的成功套接字连接。 应执行任何正常的游戏重试和回退逻辑。

游戏预期应提供安全层以及任何必需的网络地址转换 (NAT) 检测和可能要求的实现遍历。

强烈建议游戏将此端口用于其主要游戏流量套接字流,以便获得具有成功连接的最佳机会。 此端口由 Microsoft Azure PlayFab Party 库自动使用,该库默认使用此端口。 如果您没有明确将 PlayFab Party 库配置为使用其他端口,则不应直接绑定到首选本地 UDP 多人游戏端口。

该方法在调用进程内查询本地状态并快速返回,因此从时间敏感的上下文中调用它是安全的。

要求

头文件:XNetworking.h

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync
XNetworking