質問

SocketServerを使用してシンプルなPythonスクリプトを書きました。Windowsでうまく機能しますが、リモートLinuxマシン(ubuntu)で実行すると、まったく機能しません。スクリプトは以下のようです。

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

SSHによってリモートマシンにアップロードしてから、コマンドを実行します python server.py リモートマシン上で、にアクセスしてみてください xxx.xxx.xxx.xxx:7777/test 私のブラウザでは、リモートマシンの陽気なものに印刷されているものは何もありません...何かアイデアはありますか?

更新:問題解決、それはファイアウォールの問題です、皆さんに感謝します。

役に立ちましたか?

解決

サーバーをバインドしています 127.0.0.1, 、LocalHostのIPアドレス。これは、サーバーが同じマシンからの接続のみを受け入れることを意味します。別のマシンから来るものは認識されません。

外部IPアドレスにバインドするか、ワイルドカードアドレスにバインドする必要があります(つまり、特定のIPアドレスにバインドしないでください。試す:

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

他のヒント

127.0.0.1:7777に拘束されていますが、サーバーの外部IPを介してアクセスしようとします(プレースホルダー-xxx.xxx.xxx.xxxを使用します)。 127.0.0.1:7777およびxxx.xxx.xxx.xx:7777です さまざまなポート さまざまなプロセスIIRCにバインドできます。

それが修正されない場合は、ファイアウォールをチェックしてください。多くのホストが、使用する可能性のある一握り以外のすべてをブロックするファイアウォールをセットアップします

最初にTelnetまたはNCを試して、ポートでパブリックIPにTelnetを試してみて、どのような応答を得るかを確認してください。また、なぜブラウザからアクセス /テストしているのですか?コードにその部分が表示されません。私はあなたがそれの世話をしたことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top