Frage

Ich habe ein einfaches Python -Skript mit dem SocketServer geschrieben. Es funktioniert gut unter Windows, aber wenn ich es auf einem Remote -Linux -Computer (Ubuntu) ausführe, funktioniert es überhaupt nicht. Das Skript ist wie unten:

#-*-coding:utf-8-*- 
import SocketServer

class MyHandler(SocketServer.BaseRequestHandler):

    def handle(self):
        data_rcv = self.request.recv(1024).strip()
        print data_rcv

myServer = SocketServer.ThreadingTCPServer(('127.0.0.1', 7777), MyHandler)   
myServer.serve_forever()

Ich lade es mit SSH auf den Remote -Computer hoch und führe dann den Befehl aus python server.py auf dem Remote -Computer und versuchen Sie zuzugreifen xxx.xxx.xxx.xxx:7777/test Mit meinem Browser, aber nichts wird auf dem Teminal der Fernmaschinen gedruckt ... irgendwelche Ideen?

Update: Problem gelöst, es ist ein Firewall -Problem, danke euch allen.

War es hilfreich?

Lösung

Sie binden den Server an an 127.0.0.1, die IP -Adresse für Localhost. Dies bedeutet, dass der Server nur Verbindungen akzeptiert, die aus derselben Maschine stammen. Es wird keine erkennen, die von einer anderen Maschine kommen.

Sie müssen entweder an Ihre externe IP -Adresse binden oder an eine Wildcard -Adresse binden (dh nicht an eine bestimmte IP -Adresse, sondern nur an einen Port). Versuchen:

myServer = SocketServer.ThreadingTCPServer(('0.0.0.0', 7777), MyHandler) 

Andere Tipps

Sie binden an 127.0.0.1:7777, aber dann versuchen Sie, über die externe IP der Server darauf zuzugreifen (ich werde Ihren Platzhalter verwenden - xxx.xxx.xxx.xxx). 127.0.0.1:7777 und xxx.xxx.xxx.xxx:7777 sind Verschiedene Ports und kann an verschiedene Prozesse gebunden werden.

Wenn das nicht repariert wird, überprüfen Sie Ihre Firewall, viele Hosts richten Firewalls ein, die alles außer der Handvoll blockieren, die Sie wahrscheinlich verwenden werden

Versuchen Sie es mit Telnet oder NC zuerst, Telnet zu Ihrer öffentlichen IP mit Ihrem Port und sehen Sie, welche Antwort Sie erhalten. Warum greifen auf /testen Sie vom Browser auf /testen Sie? Ich sehe diesen Teil im Code nicht. Ich hoffe, Sie haben sich darum gekümmert.

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