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

# XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged

> XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged

# XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged

注册一个在首选的本地 UDP 多人游戏端口发生变更时调用的回调函数。

## 语法

```cpp theme={null}
HRESULT XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged(
         XTaskQueueHandle queue,
         void* context,
         XNetworkingPreferredLocalUdpMultiplayerPortChangedCallback* callback,
         XTaskQueueRegistrationToken* token
)
```

### 参数

*queue*   \_In\_opt\_\
类型：XTaskQueueHandle

用于注册回调的队列。同时使用该队列的工作端和完成端。

*context*   \_In\_opt\_\
类型：void\*

要传递给回调的可选上下文指针。

*callback*   \_In\_\
类型：[XNetworkingPreferredLocalUdpMultiplayerPortChangedCallback](/reference/networking/xnetworking/functions/xnetworkingpreferredlocaludpmultiplayerportchangedcallback)\*

首选端口发生变更时调用的回调函数。

*token*   \_Out\_\
类型：[XTaskQueueRegistrationToken](/reference/system/xtaskqueue/structs/xtaskqueueregistrationtoken)\*

在调用 [XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged](/reference/networking/xnetworking/functions/xnetworkingunregisterpreferredlocaludpmultiplayerportchanged) 时用于标识该回调的令牌。

### 返回值

类型：HRESULT

HRESULT 成功或错误代码。

## 备注

注册“首选的本地用户数据报协议 (UDP) 多人游戏端口变更”通知时，始终会触发一次初始通知回调。

我们会尽一切努力确保首选的本地 UDP 多人游戏端口在游戏运行期间不发生变化。但是，在某些不可避免的情况下，由于用户外部网络状况的变化并使现有的套接字流失效，端口仍会发生变化。特别是，当[网络连接级别](/build/console-features/networking/initialization-connectivity-networking)发生变化，或者游戏挂起/恢复周期中，端口发生变化的可能性会大得多。

当首选的本地 UDP 多人游戏端口发生变化时，来自未来对等方的额外入站连接可能会在任何之前的首选端口上被阻止。这可能不会在套接字层导致失败，但游戏最终可能不再从绑定到任何之前首选端口的套接字上接收到数据包。

在现有对等方之间发送和接收的数据包可能会继续正常工作，因此，首选本地 UDP 多人游戏端口的变更通知不一定会对进行中的游戏会话造成致命影响。

当变更通知发生时，游戏应尽早在不中断任何正在进行的游戏玩法的情况下，迁移到一个绑定到新首选端口的新套接字。如果游戏检测到连接丢失并重试套接字连接，游戏应始终使用最新的首选端口。

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

## 要求

**头文件：** XNetworking.h

**库：** xgameruntime.lib

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

## 概念文档

* [首选的 UDP 多人游戏端口](/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)

## 另请参阅

[首选本地 UDP 多人游戏端口网络 API](/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking)\
[XNetworking](/reference/networking/xnetworking/xnetworking_members)


## Related topics

- [XNetworkingPreferredLocalUdpMultiplayerPortChangedCallback](/zh-CN/reference/networking/xnetworking/functions/xnetworkingpreferredlocaludpmultiplayerportchangedcallback.md)
- [XNetworkingUnregisterPreferredLocalUdpMultiplayerPortChanged](/zh-CN/reference/networking/xnetworking/functions/xnetworkingunregisterpreferredlocaludpmultiplayerportchanged.md)
- [首选本地 UDP 多人游戏端口网络 API](/zh-CN/build/console-features/networking/game-mesh/preferred-local-udp-multiplayer-port-networking.md)
- [XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync](/zh-CN/reference/networking/xnetworking/functions/xnetworkingquerypreferredlocaludpmultiplayerportasync.md)
- [XNetworking](/zh-CN/reference/networking/xnetworking/xnetworking_members.md)
