2009-08-22 12 views
1

私のサーバー上で実行されている単純なTCPサーバーを取得しようとしています。私はTwisted examples pageでechoserv.pyとechoclient.pyを使用しています。私は、サーバー上でechoserv.py実行すると、私はechoclient.pyに次のように用いて微細接続できますPythonでTwistedライブラリを使用してサーバーに外部接続できません

reactor.connectTCP('localhost', 8000, factory) <- for a localhost connection 
reactor.connectTCP('192.168.0.250', 8000, factory) <- for a lan connection 

が、私は、インターネット経由でリモートから接続しようとすると、私はechoclient.pyに次の行を使用します。

reactor.connectTCP('mydomain.com', 8000, factory) 

私はechoclient.pyを実行しようとするただし、一時停止があり、その後、私が手:

connection failed: User timeout caused connection failure. 

私はランダムな操作を行うときので、私は、それが自分のドメインで何かをやっている知っていますドメイン、私は得る:

connection failed: Connection was refused by other side: 111: Connection refused. 

私のすべてのポートは、ポート8000​​用に正しく設定され、私はそれが(私はランダムなポートに他のアプリケーションとのすべての時間を使用することができます)ポートをブロックし、私のISPではありません確信しています。私は8000以外のポートも使用しようとしましたが、役に立たない。ルーターページのポートフォワーディングラインが役立つ場合は次のようになります。

[X] tcp_server   192.168.0.250 TCP 8000/8000 always edit delete 

これはどういう考えですか?

答えて

5

あなたのインバウンドサーバへのアウトバウンド接続をポートフォワードするようにルータを設定すると、クライアント(接続しようとするユーザ)が本当にあなたのネットワークの外にいる場合にのみ実際に動作します。あなたのネットワークの内側から、それを使用することはできません、それはあなたのために動作しません。あなたはそれが働いていないと感じるでしょうが、それはあります。少なくとも彼らの外では。

Port Forwarding Tester at Googleを検索すると、それを証明することができます。この1つ(Googleの最初の結果)はかなりうまくいきます:http://www.yougetsignal.com/tools/open-ports/

+2

YouGetSignalを作成しました。喜んで見つけました。 =] –

1

あなたは次のことを試しましたか?

  1. サーバーを実行しているマシンのIPでポートスキャンを実行して、ポートが開いていることを確認します。シンプルな[google検索] [1]は、たくさんのオプションを提供します。
  2. ポートが開いている場合は、ツイストクライアントスクリプトの代わりにtelnet経由でリモート接続を試みてください。一部のシステムファイアウォールは、アプリケーションレベル(Windows XPなど)をブロックし、実現することなく発信接続をブロックする可能性があります。
+0

ポートフォワーディングチェッカーを提案していただきありがとうございます。明らかに、ポート8000​​は、TCPサーバが動作しているかどうかに関係なくブロックされているようです。ルータでポート8000​​を有効にしているので、これはわかりません。それがなぜブロックされたのか?たぶん私のISPです... –

関連する問題