Estou tentando adicionar funcionalidade de rede ao meu jogo. Quero que qualquer usuário possa hospedar o jogo e que qualquer pessoa possa se conectar como cliente. O cliente envia informações ao host sobre a posição do jogador etc. Quando o host recebe uma mensagem, ele a valida e a transmite para os outros clientes. Tratarei principalmente do UDP, mas também precisarei do TCP para conversar e fazer lobby.
O problema é que não consigo receber um pacote enviado do cliente para o host ou o contrário sem ativar o encaminhamento de porta no meu roteador. Mas não acho que isso seja necessário. Acredito que o motivo pelo qual preciso de encaminhamento de porta seja porque desejo enviar um pacote de 1 computador em uma LAN para outro computador em uma LAN diferente, mas nenhum deles tem um endereço IP global, pois está em uma LAN. Realmente, só posso enviar pacotes direcionados ao roteador da outra rede, que deve encaminhá-lo para a máquina que desejo acessar. Então, como posso fazer isso sem encaminhamento de porta? De alguma forma, um servidor Web pode se comunicar com meu computador, que não possui um IP global, sem encaminhamento de porta. E já joguei muitos jogos para vários jogadores que não exigem que eu ative o encaminhamento de porta. Então deve ser possível.
Btw, eu estou usando SDL_Net. Eu não acho que isso vai mudar nada.