Skip to main content
Use este tópico para entender como usar as APIs de porta multijogador UDP (User Datagram Protocol) local preferencial para melhorar a confiabilidade do multijogador. Todas as gerações de consoles XBOX permitiram que você usasse a UDP 3074. Ela é uma porta conhecida e registrada publicamente para tráfego de rede multijogador. Os títulos do Microsoft Game Development Kit (GDK) não são exceção e podem usar as APIs de rede da porta multijogador UDP local preferencial para acessar essa porta especial. A porta multijogador UDP local preferencial é a porta local usada em uma operação subsequente de associação de soquete, em oposição à porta pública que dispositivos remotos podem usar para se conectar ao dispositivo local. A primeira só é significativa para tráfego UDP, e não para tráfego TCP (Transmission Control Protocol) e HTTP, porque ela se destina especificamente a fluxos de rede multijogador de títulos em tempo real. Historicamente, a porta tem se limitado à UDP 3074. No entanto, nos últimos anos, foi introduzida uma lógica de fallback para aumentar a confiabilidade dessa porta. Além disso, os usuários passaram a poder configurar manualmente a porta para funcionar com suas próprias configurações de rede exclusivas. É por isso que não é mais seguro codificar a UDP 3074 diretamente em um título do Microsoft Game Development Kit (GDK). Em vez disso, os títulos do Microsoft Game Development Kit (GDK) devem consultar dinamicamente a porta configurada no momento. Há três maneiras de recuperar a porta multijogador UDP local preferencial. As três variantes fornecem a mesma funcionalidade básica. Qualquer uma delas (ou qualquer combinação) pode ser chamada por um título do Microsoft Game Development Kit (GDK) de acordo com suas necessidades e casos de uso específicos. É altamente recomendável que todos os títulos do Microsoft Game Development Kit (GDK) usem a porta preferencial para o tráfego principal do jogo. Essa porta é otimizada tanto para topologias de rede ponto a ponto quanto para topologias de rede cliente/servidor. A plataforma do Microsoft Game Development Kit (GDK) garante que essa porta específica seja a que tem mais probabilidade de funcionar no ambiente de rede particular de cada usuário. Usar essa porta específica maximiza o uso dos fluxos de suporte ao cliente e de diagnóstico da plataforma, aumenta a compatibilidade padronizada com NAT (Network Address Translation), fornece funcionalidade padronizada de dispositivos certificados UPnP™ e identifica os pacotes como sensíveis ao tempo real para os algoritmos de roteadores e ISPs de QoS (Qualidade de Serviço). Essa porta preferencial é particularmente relevante para títulos que dependem de topologias de rede ponto a ponto. Ela é a única porta que permite pacotes UDP de entrada pelo firewall sem executar o hole punching de firewall. Ainda se espera que os títulos que dependem de topologias de rede ponto a ponto no Microsoft Game Development Kit (GDK) forneçam sua própria descoberta de endereço IP público e porta, além de uma solução de hole punching de NAT para clientes com tipos de NAT moderados ou estritos. A porta preferencial melhora a taxa de sucesso dessas tecnologias, mas não as substitui. Os títulos que usam topologias de rede cliente/servidor também se beneficiam do uso dessa porta. A solução de problemas, o UPnP™ e a identificação de pacotes continuam relevantes para portais cativos e outras abordagens de filtragem baseadas na origem, comuns em hospitais, hotéis e alojamentos universitários. A porta preferencial deve ser tratada como qualquer outra porta. Ela deve ser usada em conjunto com as APIs do Windows Sockets 2 (Winsock). O título deve se associar tanto a IPv4 quanto a IPv6 nessa porta ou usar um soquete de pilha dupla, e deve se associar ao endereço INADDR_ANY/in6addr_any.

Tratamento de falhas de soquete

Não há garantia de que a porta retornada possa ser usada para estabelecer uma conexão de soquete bem-sucedida com servidores ou pares específicos. A lógica normal de repetição e fallback do título deve ser executada. Sempre que o soquete for fechado e reaberto, o título deverá consultar novamente a porta multijogador UDP local preferencial mais recente, porque a porta pode mudar com o tempo.

Inicialização da rede

As três variantes (bloqueante, assíncrona e baseada em notificação) da API XNetworkingQueryPreferredLocalUdpMultiplayerPort bloquearão ou atrasarão a conclusão/notificações até que a rede seja inicializada na inicialização do título e na retomada. Você pode aguardar separadamente a inicialização da rede de acordo com a visão geral Detecção do status de inicialização da rede ou fazer uma chamada a essas APIs e aguardar o retorno.

Suspensão e retomada

Assim como qualquer outro soquete, o soquete associado à porta multijogador UDP local preferencial deve ser fechado na suspensão e recriado na retomada, após aguardar a inicialização da rede. Você deve se registrar para receber eventos de suspensão e retomada por meio de RegisterAppStateChangeNotification. Na retomada, você deve presumir que a porta multijogador UDP local preferencial mudou e escutar as alterações nessa porta ou consultá-la novamente ao criar seus novos soquetes. Para obter mais informações sobre o tratamento de suspensão e retomada no WinSock, confira Suspensão e retomada no Winsock.

Alterações na porta multijogador UDP local preferencial

O título pode escutar as alterações na porta multijogador UDP local preferencial usando a API XNetworkingRegisterPreferredLocalUdpMultiplayerPortChanged. Todos os esforços são feitos para garantir que a porta multijogador UDP local preferencial não mude enquanto o título estiver em execução. No entanto, há casos inevitáveis em que a porta mudará devido a alterações nas condições de rede externas do usuário, invalidando quaisquer fluxos de soquete existentes. É especialmente provável que a porta mude quando o nível de conectividade de rede muda ou como parte do ciclo de suspensão/retomada de um título. Quando a porta multijogador UDP local preferencial muda, conexões de entrada adicionais de pares futuros podem ser bloqueadas em qualquer porta preferencial anterior. Isso pode não causar uma falha na camada de soquete. No entanto, o título pode acabar deixando de receber pacotes em qualquer soquete associado a qualquer porta preferencial anterior. Os pacotes enviados de e para pares existentes podem continuar funcionando. Uma notificação sobre uma alteração na porta multijogador UDP local preferencial pode não ser fatal para nenhuma sessão de jogo em andamento. Quando ocorre uma notificação de alteração, o título deve migrar para um novo soquete associado à nova porta preferencial. Essa migração deve acontecer na primeira oportunidade e sem interromper a jogabilidade existente. Para detectar uma perda de conexão e repetir a conexão do soquete, o título deve sempre usar a porta preferencial mais recente.

Teste de alterações na porta multijogador UDP local preferencial

Use as etapas a seguir para alterar a porta multijogador UDP local preferencial.
  1. Com o jogo em execução, abra o Guia do XBOX. Acesse o aplicativo Configurações.
  2. Na guia Geral, selecione Configurações de rede.
  3. Selecione Configurações avançadas e, em seguida, selecione Seleção de porta alternativa.
  4. Defina a seleção de porta como Manual. Para selecionar uma porta, use o menu suspenso.
  5. A seleção de porta entra em vigor imediatamente e gera uma notificação correspondente para o seu título.
  6. Quando terminar o teste, defina a seleção de porta novamente como Automático para restaurar o comportamento padrão da porta.
Enquanto você está no aplicativo Configurações, seu título fica restrito, mas continua em execução e recebe imediatamente a notificação de alteração de porta, mesmo que não esteja visível. Seu título será suspenso se você deixar o aplicativo Configurações aberto por mais de 10 minutos sem voltar para o título.

Segurança

O soquete associado à porta multijogador UDP local preferencial se comporta como qualquer outro soquete. Em particular, o soquete não fornece nenhuma segurança adicional. O título deve usar seu próprio protocolo de comunicação segura sobre o soquete associado à porta multijogador UDP local preferencial, conforme especificado pelas práticas recomendadas de segurança de comunicação. Confira Visão geral da segurança de comunicação (tópico sob NDA) para obter mais informações.

Ponto a ponto

A porta multijogador UDP local preferencial fornece a porta mais conhecida a partir da qual uma malha ponto a ponto pode ser criada. Ela é configurada da melhor maneira possível para permitir conexões de entrada pela camada de NAT do usuário. No entanto, é responsabilidade do título executar a travessia de NAT, incluindo o seguinte.
  • Detecção do tipo de NAT
  • Detecção e troca do endereço IP público e da porta do dispositivo
  • Hole punching e travessia de NAT

Azure PlayFab Party

Internamente, o PlayFab Party usa a porta multijogador UDP local preferencial por padrão. Isso pode ser configurado por meio da API do PlayFab Party. A menos que a porta do PlayFab Party seja alterada, o título não deve se associar diretamente à porta multijogador UDP local preferencial.

Exemplo de uso

O exemplo a seguir mostra como associar um soquete de pilha dupla à porta multijogador UDP local preferencial. Para simplificar, o exemplo usa a chamada bloqueante XNetworkingQueryPreferredLocalUdpMultiplayerPort e presume que o título já aguardou a rede ficar pronta e já chamou WSAStartup.

Documentação de referência da API

Confira também

Referência da API da porta multijogador UDP local preferencial (XNetworking) Windows Sockets 2 (Winsock) Visão geral da segurança de comunicação (tópico sob NDA)
Last modified on October 6, 2026