2017-08-23 4 views
-1

dieser Code unten funktioniert gut zwischen zwei Computern im selben Netzwerk, aber es funktioniert nicht zwischen zwei Computern in zwei verschiedenen Netzwerken, und ich habe versucht, die öffentliche IP-Adressewie zwei verschiedene Computer in zwei verschiedenen Netzwerken verbinden

zu verwenden

clint

import socket    
s = socket.socket()   
port = 10000 
ip=input("what is ip : ") 
s.connect((ip, port)) 
print (s.recv(1024)) 
s.close 

Server

import socket 
s = socket.socket() 
ip=socket.gethostbyname(socket.gethostname()) 
print (ip) 
port = 10000   
s.bind((ip, port))  
s.listen(1)     
while True: 
     c, addr = s.accept() 
     print ('Got connection from', addr) 
     c.send(bytes([int(1)])) 
     c.close()  

diese Frage schon oft, aber alle Antworten fand ich könnte, ist, dass ich zu tun haben, gebeten worden, "Port Forwarding" ohne irgendwelche Code Beispiele, wie es in einigen der Antworten zu tun, die sie sagen, ich sollte Anwendung herunterladen, die die Portweiterleitung zu mir tun wird, aber ich weiß nicht, wie man es dann in meinem Python-Code verwendet?

Antwort

0

Port-Forwarding ist etwas, was Sie auf der Router-Ebene tun. Wenn beispielsweise die beiden Computer, die Sie verbinden möchten, sich hinter zwei verschiedenen WLAN-Routern an zwei verschiedenen Standorten befinden, müssen Sie beide WLAN-Router an beiden Standorten so einrichten, dass sie den Port 10000 (den Sie verwenden) an die interne IP weiterleiten des Computers, auf dem der Code ausgeführt wird.

Ihr WLAN-Router hat eine öffentliche IP-Adresse (was Sie wahrscheinlich jetzt verwenden) und Ihre Computer, auf denen Ihr Python-Code ausgeführt wird, haben interne IPs im Netzwerk, die von den WLAN-Routern zugewiesen werden. Die Port-Weiterleitung leitet den Verkehr zur öffentlichen IP eines Routers und leitet ihn intern im lokalen Netzwerk an den Computer an einer lokalen IP-Adresse weiter, auf der das Programm ausgeführt wird.

Mit anderen Worten, das ist nicht etwas, was Sie in Ihrem Code tun werden - das ist etwas, was Sie in der Software Ihres Routers tun werden.

0

Wenn Sie sich ehrgeizig fühlen, können Sie diesem Tutorial folgen, das die Konfiguration Ihrer Geräte für die Portweiterleitung überflüssig macht. Angenommen, Sie haben UPNP-fähige Router.

https://www.electricmonk.nl/log/2016/07/05/exploring-upnp-with-python/

Und es kann sogar ein Modul sein, das ganze Bein herausnimmt. (Nicht überprüft, wie es funktioniert)

https://pypi.python.org/pypi/UPnP/1.3

+0

i upnp nicht herunterladen konnte ich versucht haben, Tage, wenn ich versuche, es herunterzuladen es sagen "UPnP-1.3-py27-none-any.whl ist kein unterstütztes Rad auf dieser Plattform." –

+0

Ich erwarte, dass Sie Python3.x verwenden? Hast du es unter python2.7 versucht? –

+0

Ich benutze Python 3.6 und ich habe es nicht unter Python 2.7 versucht ich würde es jetzt versuchen –

Verwandte Themen