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

# XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult

> XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult

# XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult

获取 [XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync](/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerportasync) 调用的结果。

## 语法

```cpp theme={null}
HRESULT XNetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult(
         XAsyncBlock* asyncBlock,
         uint16_t* preferredLocalUdpMultiplayerPort
)
```

### 参数

*asyncBlock*   \_Inout\_\
类型：[XAsyncBlock](/reference/system/xasync/structs/xasyncblock)\*

指向已传递给 [XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync](/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerportasync) 函数的 [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) 结构的指针。

*preferredLocalUdpMultiplayerPort*   \_Out\_\
类型：uint16\_t\*

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

### 返回值

类型：HRESULT

HRESULT 成功或错误代码。

## 备注

当 `XAsyncBlock` 结构传递给 `NetworkingQueryPreferredLocalUdpMultiplayerPortAsyncResult` 函数时，此函数用于获取异步多人游戏流量的首选本地 UDP 端口号。有关正在检索的首选本地 UDP 多人游戏端口的详细信息，请参阅[首选本地用户数据报协议 (UDP) 多人游戏端口网络 API](/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)。有关 Microsoft 游戏开发工具包 (GDK) 游戏中的网络信息，请参阅[检索网络信息](/build/console-features/networking/initialization-connectivity-networking)。

返回的首选本地 UDP 多人游戏端口是在后续[套接字绑定](https://learn.microsoft.com/windows/desktop/api/winsock/nf-winsock-bind)操作中使用的本地端口，而不是远程设备可能用来连接本地设备的公共端口。它仅对 UDP 流量有意义，而不适用于 TCP 或 HTTP 流量，因为它专门针对多人游戏实时游戏网络流。

此端口默认为 UDP 3074，但存在自动回退（当端口被确定为不适合游戏流量时）和用户可通过 XBOX 网络设置疑难解答程序设置的手动替代。此端口的网络行为用于驱动用户可见的严格、中等和开放 NAT 类型。此端口由 XBOX 派对聊天、XBOX 网络疑难解答程序、在线 XBOX Live 疑难解答文档和 CSS 疑难解答流使用，且经常由用户在家用路由器中手动配置。

返回的端口已通过 UPnP 在用户的家用路由器中配置为允许入站和出站数据包。

此端口应像其他端口一样对待，并应与 [Windows Sockets (Winsock)](https://learn.microsoft.com/windows/desktop/WinSock/windows-sockets-start-page-2) API 一起使用。游戏应同时绑定此端口的 IPv4 和 IPv6 或使用双栈套接字，并应绑定到 `INADDR_ANY`/`in6addr_any` 地址。

<Note>此函数以主机字节序返回端口。`sockaddr_in::sin_port` 和 `sockaddr_in6::sin6_port` 字段均为网络字节序。在将返回的端口传递给 bind 函数时，应使用 [htons](https://learn.microsoft.com/windows/desktop/api/winsock/nf-winsock-htons) 函数转换字节序。</Note>

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

游戏应提供安全层以及所需的任何网络地址转换 (NAT) 检测和穿越实现。

强烈建议游戏使用此端口作为其主要游戏流量套接字流，以获得成功连接的最佳机会。此端口由 [Microsoft Azure PlayFab Party](/build/console-features/networking/game-mesh/playfab-party-intro-networking) 库自动使用，其默认为使用此端口。除非你显式将 PlayFab Party 库配置为使用其他端口，否则不应直接绑定到首选本地 UDP 多人游戏端口。

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

## 要求

**头文件：** XNetworking.h

**库：** xgameruntime.lib

**支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## 另请参阅

[XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync](/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerportasync)\
[XNetworking](/reference/networking/xnetworking/xnetworking_members)


## Related topics

- [XNetworking](/zh-CN/reference/networking/xnetworking/xnetworking_members.md)
- [面向 GDK 的 Unity C# API 包装器](/zh-CN/build/gdk-and-engines/unity/unity-api-wrappers.md)
- [XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync](/zh-CN/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerportasync.md)
- [XNetworkingQueryPreferredLocalUdpMultiplayerPort](/zh-CN/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerport.md)
- [XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged](/zh-CN/reference/networking/xnetworking/functions/xnetworkingunregisterpreferredlocaludpmultiplayerportchanged.md)
