Question

J'ai écrit un script python simple en utilisant le SocketServer, il fonctionne bien sur Windows, mais quand je l'exécute sur une machine Linux à distance (Ubuntu), il ne fonctionne pas du tout .. Le script est comme ci-dessous:

#-*-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()

Je télécharger sur la machine distante par SSH, puis exécutez la commande python server.py sur la machine distante, et essayez d'accéder à xxx.xxx.xxx.xxx:7777/test avec mon navigateur, mais rien est imprimé sur teminal de la machine à distance ... des idées?

Mise à jour. Le problème est résolu, il est un problème de pare-feu, vous remercie tous

Était-ce utile?

La solution

Vous liez le serveur à 127.0.0.1, l'adresse IP pour localhost. Cela signifie que le serveur accepte uniquement les connexions provenant de la même machine; il ne reconnaîtra pas les provenant d'une autre machine.

Vous devez soit lier à votre adresse IP externe, ou se lier à une adresse générique (à savoir ne se lient pas à une adresse IP particulière, juste un port). Essayez:

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

Autres conseils

Vous liez à 127.0.0.1:7777 mais en essayant d'y accéder via les serveurs IP externe (je vais utiliser votre espace réservé - xxx.xxx.xxx.xxx). 127.0.0.1:7777 et xxx.xxx.xxx.xxx:7777 sont différents ports et peut être lié par différents processus IIRC.

Si cela ne résout pas, vérifiez votre pare-feu, de nombreux hôtes mis en place des pare-feu que tout bloc, mais la poignée vous êtes susceptible d'utiliser

Essayez avec telnet ou nc premier, telnet à votre adresse IP publique avec votre port et voir quelle réponse que vous obtenez. De plus, pourquoi accèdent test / du navigateur? Je ne vois pas cette partie dans le code. J'espère que vous avez pris soin de cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top