- Bloquante : XNetworkingQueryPreferredLocalUdpMultiplayerPort
- Asynchrone : XNetworkingQueryPreferredLocalUdpMultiplayerPortAsync
- Basée sur les notifications : XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged
INADDR_ANY/in6addr_any.
Gestion des échecs de socket
Rien ne garantit que le port retourné puisse être utilisé pour établir une connexion de socket réussie avec des serveurs ou des pairs particuliers. La logique habituelle de nouvelle tentative et de repli du titre doit être appliquée. Chaque fois que le socket est fermé et rouvert, le titre doit interroger à nouveau le port multijoueur UDP local préféré le plus récent, car le port peut changer au fil du temps.Initialisation du réseau
Les trois variantes (bloquante, asynchrone et basée sur les notifications) de l’APIXNetworkingQueryPreferredLocalUdpMultiplayerPort bloquent ou retardent l’achèvement/les notifications jusqu’à ce que le réseau soit initialisé au lancement du titre et lors de la reprise. Vous pouvez attendre séparément l’initialisation du réseau conformément à la vue d’ensemble Détection de l’état d’initialisation du réseau, ou appeler ces API et attendre leur retour.
Suspension et reprise
Comme tout autre socket, le socket lié au port multijoueur UDP local préféré doit être fermé lors de la suspension et recréé lors de la reprise, après avoir attendu l’initialisation du réseau. Vous devez vous inscrire aux événements de suspension et de reprise viaRegisterAppStateChangeNotification. Lors de la reprise, vous devez supposer que le port multijoueur UDP local préféré a changé et soit écouter les modifications de ce port, soit l’interroger à nouveau lors de la création de vos nouveaux sockets. Pour plus d’informations sur la gestion de la suspension et de la reprise avec WinSock, consultez Suspension et reprise dans Winsock.
Modifications du port multijoueur UDP local préféré
Le titre peut écouter les modifications du port multijoueur UDP local préféré à l’aide de l’API XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged. Tout est mis en œuvre pour que le port multijoueur UDP local préféré ne change pas pendant l’exécution du titre. Cependant, il existe des cas inévitables où le port change, parce que les conditions réseau externes de l’utilisateur changent et invalident tous les flux de socket existants. Le port est particulièrement susceptible de changer lorsque le niveau de connectivité réseau change, ou dans le cadre d’un cycle de suspension/reprise du titre. Lorsque le port multijoueur UDP local préféré change, les connexions entrantes supplémentaires provenant de futurs pairs peuvent être bloquées sur tout port préféré précédent. Cela peut ne pas provoquer d’échec au niveau de la couche socket. Toutefois, le titre peut finir par cesser de recevoir des paquets sur tout socket lié à un port préféré précédent. Les paquets envoyés vers et depuis des pairs existants peuvent continuer à fonctionner. Une notification de modification du port multijoueur UDP local préféré n’est pas nécessairement fatale pour une session de jeu en cours. Lorsqu’une notification de modification se produit, le titre doit migrer vers un nouveau socket lié au nouveau port préféré. Cette migration doit avoir lieu le plus tôt possible et sans interrompre la partie en cours. Pour détecter une perte de connexion et retenter la connexion du socket, le titre doit toujours utiliser le port préféré le plus récent.Test des modifications du port multijoueur UDP local préféré
Procédez comme suit pour modifier le port multijoueur UDP local préféré.- Pendant l’exécution de votre jeu, ouvrez le Guide XBOX. Accédez à l’application Paramètres.
- Sous l’onglet Général, sélectionnez Paramètres réseau.
- Sélectionnez Paramètres avancés, puis Sélection d’un autre port.
- Définissez la sélection du port sur Manuel. Pour sélectionner un port, utilisez le menu déroulant.
- La sélection du port prend effet immédiatement et envoie une notification correspondante à votre titre.
- Une fois vos tests terminés, redéfinissez la sélection du port sur Automatique pour rétablir le comportement par défaut du port.
Lorsque vous êtes dans l’application Paramètres, votre titre est en mode restreint (constrained), mais il continue de s’exécuter et reçoit immédiatement la notification de modification du port, même s’il n’est pas visible. Votre titre est suspendu si vous laissez l’application Paramètres ouverte plus de 10 minutes sans revenir à votre titre.
Sécurité
Le socket lié au port multijoueur UDP local préféré se comporte comme n’importe quel autre socket. En particulier, il n’offre aucune sécurité supplémentaire. Le titre doit utiliser son propre protocole de communication sécurisé par-dessus le socket lié au port multijoueur UDP local préféré, comme le préconisent les bonnes pratiques de sécurité des communications. Pour plus d’informations, consultez Vue d’ensemble de la sécurité des communications (rubrique sous NDA).Pair à pair
Le port multijoueur UDP local préféré est le meilleur port connu à partir duquel un maillage pair à pair peut être construit. Il est configuré de la meilleure façon possible pour autoriser les connexions entrantes à travers la couche NAT de l’utilisateur. Cependant, il incombe au titre d’effectuer la traversée NAT, notamment les opérations suivantes.- Détection du type de NAT
- Détection et échange de l’adresse IP publique et du port de l’appareil
- Perçage (punching) et traversée NAT
