2016-10-02 2 views
0

Heute habe ich mein allererstes Sockets-Programm gemacht - ich habe einen Client und einen Server, die sich gegenseitig (wie ein Chat) mit Sockets kommunizieren. Bei Verwendung der internen IP als 'Host' wird die Verbindung hergestellt, ansonsten wird über die externe IP keine Verbindung hergestellt.Python: Verbinden mit Sockets über externe IP

Edit 1:

#Client 
s = socket.socket() 
host = '123.123.123.123' 
port = 9999 
s.connect((host, port)) 

#Server 
host = '' 
port = 9999 
s = socket.socket() 
s.bind((host, port)) 
s.listen(5) 
connection, address = s.accept() 

Wie wird diese Arbeit richtig mit zum Beispiel einem Laptop? Da Ihre IP-Adresse bei jedem Wechsel von Wifi geändert wird, wie würde ich in der Lage sein, ein Programm zu erstellen, das permanent mit diesem speziellen Laptop funktioniert?

Ich verstehe, dass ich den spezifischen Port zu einem bestimmten internen Computer wie 192.168.0.5 weiterleiten muss. Aber was ist, wenn ich einen Laptop benutze und keinen Zugang zum WLAN-Router habe? Ich hätte keinen Zugang zu jedem Router, den ein Laptop benutzt.

Ich möchte den Code dauerhaft kompatibel sein.

+0

"Es hat nicht richtig funktioniert" ist sehr vage. Es scheint hier einige Fragen zu geben, die erste ist möglicherweise eine gute Frage. Veröffentlichen Sie den Code, den Sie verwenden, und geben Sie genau an, was Sie erwarten und was stattdessen geschieht. Die anderen Fragen sind für dieses Format zu weit gefasst. –

+0

Aktualisiert den Thread, fügte den wichtigen Teil des Codes sowie eine bessere Erklärung –

Antwort

0

Verwenden Sie DynDNS.com oder NoIP.com Portal. Sie installieren ein Programm auf dem Laptop, das Ihre IP-Frequenz überprüft und die aktuelle IP an das Portal sendet, das diese IP an Ihre Adresse wie "my_laptop.noip.com" zuweist. Dann können die Benutzer über "my_laptop.noip.com" anstatt über die IP-Adresse auf Ihren Laptop zugreifen.

Sie weisen die IP-Adresse der lokalen Netzwerkkarte (NIC) wie WLAN immer dem Socket zu. Sie können keine externe IP zuweisen. Sie müssen Ihren Router so konfigurieren, dass er eine externe IP-Adresse anfordert: Der Port wird an Ihren lokalen IP-Port gesendet. Natürlich können Internet Provider Router Ihre Ports blockieren und es wird nicht funktionieren.

+0

Auch wenn ich die IP-Adresse des Laptops als NoIP habe, wird es immer noch auf meine externe IP-Adresse umgeleitet und da ich keinen Zugriff auf den Router habe, habe ich kann den externen: port nicht an meinen internen: port weiterleiten, was kann ich dann machen? –

Verwandte Themen