Em primeiro lugar, você não está se comunicando diretamente com hosts em outros albergues, é através de pelo menos um gateway, mais provavelmente dois: o seu e o deles. Os gateways marcam as extremidades de seus domínios de broadcast, o que efetivamente significa que as transmissões não serão transmitidas além de um gateway. No entanto, jogos, especialmente os Warcrafts usam transmissões para anunciar servidores. É por isso que você não vê os servidores criados por hosts em outros albergues; porque você não está recebendo as transmissões deles.
Curiosamente, eu mesmo não joguei esse problema, mas é isso que eu posso imaginar e tentarei:
Do fato de que há algo como o BattleLan que resolve o problema, eu acho que as mensagens de broadcast incluem informações do formulário "Há um jogo aberto de e". Uma vez que o seu cliente de jogo recebeu essa transmissão, ele contata o servidor para todo o resto.
Para validar, você pode usar ferramentas como wireshark
ou tcpdump
, fazê-las ouvir em sua placa de rede local para tráfego de broadcast e abrir um jogo de Warcraft. Os programas capturarão e exibirão as transmissões. Provavelmente, os pacotes são endereçados para 255.255.255.255 ou o hightes IP da sua sub-rede, provavelmente ainda terminando com 255. O pacote IP deve conter um UDP segmemt, não TCP, mas ainda pode ser endereçado à porta 6112.
Conceitualmente, o que você precisa fazer é pegar os segmentos UDP desses pacotes de transmissão IP e enviá-los via IP (unicast) para os clientes remotos que estão fora do domínio de transmissão dos servidores. Como você já sabe, o IP-unicast irá (vai) além de seus gateways até o computador remoto.
Dependendo da complexidade do protocolo que o Warcraft implementa, você realmente precisa capturar, extrair e enviar as mensagens ou simplesmente criá-las você mesmo.
Acho que já existe uma implementação deste aqui . Adapte / experimente e veja o que ele faz por você.