Comportamento de soquete estranho (um computador - meu laptop - aceitará uma conexão com meu servidor, outro - meu PC - não aceitará)

0

Eu escrevi 2 programas no Python 2.7. Um cria um soquete de host enquanto o outro cria um soquete de cliente. Então eles tentam se conectar. Eu tive meu programa host no meu PC e coloquei meu programa cliente no meu telefone que estava conectado ao WIFI na mesma rede que o meu PC. Eu configurei o programa cliente (no meu telefone, que está na minha LAN) para conectar ao endereço IP local do meu PC. Eu verifiquei as falhas no meu código e descobri que é impecável. No entanto, quando tentei executá-lo, recebi um comportamento muito estranho em troca:

  1. Porta está correta. Nome do host está correto. Eu tento me conectar. Nada acontece. Nenhuma conexão é estabelecida.
  2. eu reiniciei meu PC.
  3. Eu tento de novo. O mesmo resultado.
  4. Desativo meu firewall local e público.
  5. Agora eu recebo algo, mas apenas no meu dispositivo cliente: [Errno 111] Conexão recusada.
  6. eu ligo meus firewalls novamente.
  7. O mesmo resultado que em 1. (sem conexão)
  8. Eu corro o programa host no meu laptop. Eu tento me conectar. Isso funciona!
  9. Eu redefino meu roteador e executo meu programa host no PC novamente. O mesmo resultado que em 1.
  10. Agora também executo o programa cliente no meu PC, conectando-o ao "localhost". Funciona.
  11. Eu faço o mesmo que 10. definindo o programa cliente para se conectar ao endereço IP local do meu PC novamente. Erro:

    Traceback (most recent call last):
      File "<pyshell#5>", line 1, in <module>
        s.connect(cn)
      File "C:\Python27\lib\socket.py", line 224, in meth
        return getattr(self._sock,name)(*args)
    error: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
    

Em 6. Cheguei à conclusão de que o problema está relacionado ao PC e que meus programas funcionam bem.

Alguns intels:

  • Windows 7 no PC e no laptop.
  • Estou usando o Python 2.7.
  • Laptop e smartphone são conectados à rede via WIFI, PC via cabo.
  • Eu tentei portas diferentes para me certificar de que não eram o problema.

provavelmente não é relevante, mas aqui está o código para o link do host e do cliente

O que está acontecendo?

    
por Cosinux 01.05.2016 / 01:36

1 resposta

0

Você está vinculado a localhost , que é apenas uma interface interna. Programas vinculados a 127.0.0.1 não são acessíveis pela rede, isso é por design. Isso pode ser visto quando você recebe uma "conexão recusada" quando você se conecta ao firewall. Quando você envia um TCP SYN para uma porta fechada, o SO envia de volta um TCP RST de volta ao cliente para indicar que a porta está fechada.

Quando você diz que a ligação a 0.0.0.0 não funcionou, você pode ser mais específico? Como isso falha exatamente?

Uma coisa que você pode tentar é esta:

server.bind(("", port))

Se bem me lembro, isso tentará se ligar a todas as interfaces disponíveis. Não tenho certeza do que você tentou anteriormente, mas isso deve resolver o seu problema.

    
por 01.05.2016 / 16:54