Frage

ich muss Verbindungsserver <=> Client erstellen. Ich benutze diesen Code: Server:

import socket

HOST = 'localhost'
PORT = 50007      
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()

Client:

import socket

HOST = 'localhost'   
PORT = 50007             
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

Es funktioniert gut! Aber wenn Server auf dem Computer erstellt, die nicht Router hat. Wenn u-Router haben, bevor Server erstellen sollten Sie 50007-Port Ihr Modem öffnen. Wie kann ich Server auf allen Computern erstellen, ohne Port ermöglicht? Torrent-Clients tun es irgendwie. Danke.

War es hilfreich?

Lösung

Die Frage ist ein wenig verwirrend, aber ich werde versuchen zu helfen. Grundsätzlich, wenn die Port (50007) auf dem Server-Rechner durch eine Firewall blockiert wird, wird es nicht möglich sein, eine TCP-Verbindung vom Client zu machen. Das ist der Zweck des Firewall. Viele Protokolle (SIP und Bittorrent zum Beispiel) verwenden Firewall- und NAT-Navigationsstrategien, aber das ist ein komplexes Thema, das Sie kann weitere Informationen erhalten, hier . Sie werden feststellen, dass Bittorrent effektiv zu nutzen, können Sie die Portweiterleitung für NAT aktivieren und entsperren Port für Firewalls reicht. Auch Bittorrent verwendet TCP-Verbindungen für die meisten Datenübertragung. Hier ist das Mitnehmen:

  

Beachten Sie zunächst, dass es zwei Arten von Verbindungen, die das BitTorrent-Programm machen muss:

     
      
  • Outbound HTTP-Verbindungen an den Tracker, in der Regel auf Port 6969.
  •   
  • Eingehende und ausgehende Verbindungen zu den Peer-Maschinen, in der Regel auf Port 6881 und höher.
  •   

Andere Tipps

Sehr schwierig, Ihre Frage zu verstehen ...

  

(...) Torrent-Clients tun es irgendwie.

Die Torrent-Clients können dies nur tun, wenn das Router - Internet-Gateway-Gerät (IGD) - das unterstützt Abschnitt über NAT-Traversal .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top