2016-09-08 27 views
0

私はサーバを作成しました(私はpython 3、twisted、tkinterを使用しました)、すべてローカルマシン上で接続しようとすると大丈夫です。 telnet localhost port "ですが、この" telnet ip_address port "を試してみると接続されません。質問はなぜですか?これを簡単にするために、簡単なコードを次に示します。ツイストサーバはインターネット経由で接続できません

from twisted.internet import reactor, protocol 

class Echo(protocol.Protocol): 

    def dataReceived(self, data): 
     self.transport.write(data) 

def main(): 
    factory = protocol.ServerFactory() 
    factory.protocol = Echo 
    reactor.listenTCP(8123, factory) 
    reactor.run() 

if __name__ == '__main__': 
    main() 

答えて

0

ここでは、実行する必要があることの概要を示します。物事を始めるには、localhost以外のインターフェースにバインドする必要があります。あるいは、すべてのインターフェイス(つまり、interface = '0.0.0.')でリッスンすることもできます。あなたのコードでは、あなたreactor.listenTCP()機能へのインタフェースを追加する必要があります。

reactor.listenTCP(8123, factory, interface='0.0.0.0') 

次は、着信TCPトラフィックがルーターやサーバー上で許可されていることを確認する必要があります。また、着信WANインターフェイスからルーターからサーバー上のインターフェイスにトラフィックを転送する必要があります。サーバー側では、ファイアウォールによって着信トラフィックが許可されていることを確認する必要があります。あなたのISPから提供されたWAN IPアドレスが72.10.20.30で、Twistedサーバーがサーバーのインターフェイス192.168.1.100:8123で実行されているとします。ルーターに移動し、ポートフォワードまたはNAT機能を探して、WAN IPの要求がサーバーのIPに転送されるように設定します。

これらの手順では、ネットワークを非常に脆弱にする可能性があるため、特に注意してください。 OpenShiftやHerokuのようなサービスを使ってPythonプロジェクトをホストする方が良いでしょう。

+0

あなたの応答に感謝しますが、それでも動作しません。私は 'interface = '0.0.0.0''を設定し、私は'ポートフォワーディング 'をしました(Linux Mintで走っています。ファイアウォールがないと思います)。私のIP上でポート8123をスキャンすると、ここでは - [リンク](http://www.canyouseeme.org/)ポートが閉じています、何が問題なのですか? – Roman

+0

ISPは着信TCP接続を許可していますか?いくつかはない –

+0

多分、それを確認する方法がわからない。しかし、今私は誰かが私に電話をかけようとしているときにSkypeがどのように機能するのだろうと思っていますか?または急流(ピアツーピア接続)、それを解明するための良い記事や本があるかもしれませんが、私はそれを読むでしょう。 – Roman

関連する問題