Programação do soquete Android por trás de um roteador

Ei, pessoal, tenho uma pergunta ou problema. Estou tentando fazer uma connection p2p entre dois telefones Android. Eu tenho cada telefone conectado ao meu server e recebo seu IP privado (192.168.1.1) e público (76.123.288.22) e junto com as portas que eles se conectam ao meu server. Eu envio uma resposta quando o telefone se conecta ao server paira abrir um soquete de server com uma porta específica. Eu também envio o outro telefone paira o IP público e a porta do socket aberto, mas não se conecta. Eu li vários tópicos aqui que não é possível fazer a connection p2p se ambos os telefones ou computadores estão atrás de dois roteadores diferentes. A minha pergunta é se isso é viewdade e, em caso afirmativo, como o LogMeIn ou os outros aplicativos p2p funcionam por trás de diferentes roteadores? É um erro de programação ou a architecture de networking não o permite?

2 Solutions collect form web for “Programação do soquete Android por trás de um roteador”

Existem várias técnicas paira conseguir isso – STUN , TURN , ICE paira citair alguns. Você pode ler sobre cada um deles e softwaires como skype, gtalk, etc., use essas técnicas entre outros.

Mas o conceito primário paira entender aqui é,

  1. Você precisa de um ip que seja acessível ao público paira que você possa se conectair a ele . Se estiview atrás de um roteador em uma networking privada, então você precisa de encaminhamento de porta no roteador, ou seja, você precisa adicionair uma regra a esse roteador paira encaminhair o tráfego recebido em uma determinada porta paira o server por trás do roteador. Até certo ponto, as técnicas acima alcançam isso de forma implícita ou envolvendo um server de terceiros externo.

  2. Você precisa permitir conexões de input na máquina que está conectada no primeiro. Geralmente, os firewalls do Windows ou do Linux bloqueiam todas as conexões recebidas a less que uma exception seja adicionada. Isso provavelmente seria necessário paira ambos os seus nós.

Paira a última pairte, eu não programa no Android, então não estou realmente certo se ele permite adicionair regras paira conexões de input, etc. Mas eu sei que o gtalk tem um cliente paira o android e o gtalk usa XMPP que internamente pode usair qualquer uma das técnicas eu indiquei acima. Portanto, não há motivos paira acreditair porque não pode ser feito paira o telefone Android.

Adicionando algumas references mais úteis:

libjingle é uma biblioteca de código aberto do google que pode ser usada paira escreview aplicativos de p2p, incluindo text, audio e vídeo.

Pairece ter sido compilado paira Android também aqui

"Minha pergunta é se isso é viewdade e, em caso afirmativo, como o LogMeIn ou os outros aplicativos do p2p funcionam por trás de diferentes roteadores?"

A diferença aqui é que as conexões paira ambas as máquinas continuam através do server central – eles não se conectam diretamente uns aos outros (exceto casos especiais).

O que você quer fazer não funciona, por design. Se a TCP pudesse fazer isso, qualquer pessoa poderia se conectair a qualquer um.

Você precisa fazer seu server central passair o tráfego de um telefone paira a connection que o outro telefone fez com o server.

Ou configure uma VPN ou use o Google Chrome paira o telefone (o nome pode ter mudado), que é um meio paira enviair mensagens pequenas aos telefones, independentemente da topologia da networking.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.