- Con bloqueo: XNetworkingQueryPreferredLocalUdpMultiplayerPort
- Asincrónica: XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync
- Basada en notificaciones: XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged
INADDR_ANY/in6addr_any.
Control de errores de socket
No hay ninguna garantía de que el puerto devuelto pueda usarse para establecer una conexión de socket correcta con servidores o pares concretos. Debe realizarse la lógica normal de reintento y reserva del título. Cada vez que el socket se cierre y se vuelva a abrir, el título debe volver a consultar el puerto multijugador UDP local preferido más reciente, porque el puerto puede cambiar con el tiempo.Inicialización de la red
Las tres variantes (con bloqueo, asincrónica y basada en notificaciones) de la APIXNetworkingQueryPreferredLocalUdpMultiplayerPort se bloquearán o retrasarán la finalización o las notificaciones hasta que la red se inicialice en el inicio del título y en la reanudación. Puedes esperar por separado a la inicialización de la red según la información general de Detección del estado de inicialización de la red, o bien puedes llamar a estas API y esperar a que devuelvan un resultado.
Suspensión y reanudación
Al igual que cualquier otro socket, el socket enlazado al puerto multijugador UDP local preferido debe cerrarse en la suspensión y volver a crearse en la reanudación después de esperar a la inicialización de la red. Debes registrarte para los eventos de suspensión y reanudación medianteRegisterAppStateChangeNotification. En la reanudación, debes suponer que el puerto multijugador UDP local preferido ha cambiado y, o bien escuchar los cambios en el puerto multijugador UDP local preferido, o bien volver a consultarlo al crear los nuevos sockets. Para obtener más información sobre el control de suspensión y reanudación de WinSock, consulta Suspensión y reanudación en Winsock.
Cambios en el puerto multijugador UDP local preferido
El título puede escuchar los cambios en el puerto multijugador UDP local preferido mediante la API XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged. Se realizan todos los intentos posibles para garantizar que el puerto multijugador UDP local preferido no cambie mientras el título se está ejecutando. Sin embargo, hay casos inevitables en los que el puerto cambiará debido a que las condiciones de red externas del usuario cambien e invaliden los flujos de socket existentes. Es especialmente probable que el puerto cambie cuando cambia el nivel de conectividad de red, o como parte de un ciclo de suspensión y reanudación del título. Cuando cambia el puerto multijugador UDP local preferido, es posible que las conexiones entrantes adicionales de pares futuros se bloqueen en cualquier puerto preferido anterior. Esto podría no provocar un error en la capa de socket. Sin embargo, el título podría dejar de recibir paquetes en cualquier socket enlazado a cualquier puerto preferido anterior. Los paquetes enviados hacia y desde los pares existentes podrían seguir funcionando. Una notificación sobre un cambio en el puerto multijugador UDP local preferido podría no ser fatal para las sesiones de juego en curso. Cuando se produce una notificación de cambio, el título debe migrar a un nuevo socket enlazado al nuevo puerto preferido. Esta migración debe producirse a la primera oportunidad y sin interrumpir el juego en curso. Para detectar una pérdida de conexión y reintentar la conexión del socket, el título siempre debe usar el puerto preferido más reciente.Prueba de los cambios en el puerto multijugador UDP local preferido
Sigue estos pasos para cambiar el puerto multijugador UDP local preferido.- Mientras el juego se está ejecutando, abre la Guía de XBOX. Ve a la aplicación Settings.
- En la pestaña General, selecciona Network settings.
- Selecciona Advanced settings y, a continuación, selecciona Alternate port selection.
- Establece la selección de puerto en Manual. Para seleccionar un puerto, usa el menú desplegable.
- La selección del puerto surte efecto inmediatamente y provoca una notificación correspondiente a tu título.
- Cuando termines de probar, vuelve a establecer la selección de puerto en Automatic para devolver el comportamiento del puerto al valor predeterminado.
Mientras estás en la aplicación Settings, tu título está restringido pero sigue ejecutándose y recibe inmediatamente la notificación de cambio de puerto, aunque tu título no sea visible. Tu título se suspende si dejas la aplicación Settings abierta durante más de 10 minutos sin volver a tu título.
Seguridad
El socket enlazado al puerto multijugador UDP local preferido se comporta igual que cualquier otro socket. En particular, el socket no proporciona ninguna seguridad adicional. El título debe usar su propio protocolo de comunicación seguro sobre el socket enlazado al puerto multijugador UDP local preferido, según lo especificado en los procedimientos recomendados de seguridad de las comunicaciones. Para obtener más información, consulta Información general sobre la seguridad de las comunicaciones (tema NDA).Punto a punto
El puerto multijugador UDP local preferido proporciona el mejor puerto conocido a partir del cual se puede construir una malla de punto a punto. Está configurado de la mejor manera posible para permitir conexiones entrantes a través de la capa NAT del usuario. Sin embargo, es responsabilidad del título realizar el recorrido de NAT, lo que incluye lo siguiente.- Detección del tipo de NAT
- Detección e intercambio de la dirección IP pública y el puerto del dispositivo
- Perforación y recorrido de NAT
