Acontece que o problema foi várias coisas, principalmente decorrentes do meu modem / roteador. Eu uso um Motorola SB6580 , que recentemente teve uma atualização de firmware, e não foi reiniciado por 10 dias, fazendo com que ficasse muito lento, me impedindo de querer fazer muitas alterações nele.
A atualização de firmware alterou a página de encaminhamento de porta para incluir uma seção de endereço de host remoto externo (padrão 0.0.0.0) sem problemas, mas outra coisa que eles fizeram quebrou as regras de encaminhamento de porta existentes conjunto.
Eu estava usando um intervalo de portas a ser encaminhado que não estava funcionando e, alterando esse intervalo para 8399 - 8399, ele começou a funcionar novamente. A reinicialização não afetou, além de aumentar a velocidade dos modems, nem alterar o protocolo de ambos para TCP.
IP Addr|Start Port|End Port|Remote Host Addr|Start Port|End Port|Protocol|Enabled
192.168.0.101|8340| 8399| 0.0.0.0| 8340| 8399| Both|Checked
192.168.0.101|8399| 8399| 0.0.0.0| 8399| 8399| TCP|Checked
Além disso, ao usar o comando gethostbyname (gethostname ()) do PHP no Linux, o endereço retornado é um endereço local de 127.0.1.1, a segunda entrada no arquivo / etc / hosts, que não funciona para ligar um soquete. $ _SERVER ['REMOTE_ADDR'] também retorna um aviso: não é possível procurar o host. Ao alterar manualmente para o endereço de casa (sub-rede?) (O meu é 192.168.0.101) ou o curinga do IPv4 0.0.0.0 , o ouvinte do soquete é ligado corretamente e aceita conexões externas.
Minha experiência com o roteador e a inexperiência com o Linux me fez inclinar-se para o caminho errado da solução de problemas do Linux. Depois de perceber que as coisas não estavam funcionando no Windows 7, eu fiz as duas alterações acima e tudo agora funciona como deveria.