Sockets

8 respostas
matheusjava

Olá pessoal, bom vou direto ao ponto. Eu estou fazendo uma rede p2p com Sockets e quero que quando eu digitar o ip ele a máquina se conecte com outra, isso eu ja fiz, mas as máquinas só trocam mensagens se estiverem em rede. A questão é: tem como utilizar uma rede p2p entre duas maquinas que nao se encontram na mesma rede?

Desde já muito obrigado pessoal
Abraços

8 Respostas

celso.martins

Cara, sockets são sockets, independente de como você vá utilizar.

Fechando uma conexão socket entre um client e um server, funcionará com o client em qualquer lugar do mundo, assim como o server.

Preste atenção se o IP que você está usando, para conectar ao server, não é o IP da LAN (local - interno). Se for, troque para o IP externo.

matheusjava

Mas eu estou usando o externo e msm assim nao conecta com a maquina do meu amigo =/

celso.martins

Qual IP? Manda para eu tentar pingar daqui.

Desabilita o firewall.

Se ele estiver com uma aplicação escutando corretamente em uma porta, me manda esta porta também que tentarei fazer um telnet.

matheusjava

tem q desabilitar o firewall?

celso.martins

ou configura-lo corretamente.

para modularizar o problema, o que você prefere fazer?

matheusjava

nao sei mano =/

celso.martins

Mudularizar = quebrar em partes menores (módulos).

Quando você tem um problema, a melhor abordagem para “ataca-lo” é quebra-lo em partes menores e analisar estas partes, identificando o que você pode resolver e o que precisa ser pesquisado (Internet, amigos, livros, etc).

Dessa forma você consegue um ataque mais direto nos pontos fracos, sendo mais eficiente na solução do problema.

Só isso.

Para você quebrar o problema em partes menores, o que você acha melhor? Desabilitar o firewall ou configura-lo corretamente?

ViniGodoy

Não vai funcionar, pq seu server deve estar num endereço publicado de internet.

O que acontece, é que tanto você e seu amigo estão atrás de um NAT. O NAT faz a tradução do seu endereço interno da rede para um endereço público, o que permite que você compartilhe um endereço internet válido com diversos usuários.

Acontece que o NAT só pode tratar uma resposta se alguma mensagem tiver sido enviada de dentro da rede. É no momento do envio que ele anota que máquina está soliciatando o que, e fica sabendo para quem encaminhar a resposta do retorno. Esse mesmo NAT ignora todas as requisições, vindas de redes externas, caso elas não tenham sido solicitadas.

Se você tem controle sobre seu NAT, como é o caso de algumas redes ADSL, o dono do servidor teria que reprogramar o modem para que todas as requisições numa porta específica recaiam sobre o endereço de rede interno, no caso, o endereço da máquina dele. É o que chamamos de “abrir portas” para que um cliente de torrent, por exemplo, funcione.

Caso você queria sair do TCP e passar para o UDP, existe uma técnica chama Hole Punching, que permite que você drible o funcionamento do NAT, desde que os dois lados da conexão queiram se conectar ao mesmo tempo (ou haja um servidor externo para sincronizar essa conexão).

Criado 17 de junho de 2009
Ultima resposta 18 de jun. de 2009
Respostas 8
Participantes 3