2011-10-19 17 views
1

クラスプロジェクトでは、ソケットプログラミングPythonをいくつか実行しようとしていますが、非常に基本的な問題があります。ラップトップからラボマシンへのTCP接続を作成できません。 (私は "サーバ"として使うことを望んでいます)私が書いたスクリプトに入ることさえなくても、私は単純にインタープリタのラインコマンドを成功させようとしていませんでした。PythonでTCP接続を開始する際のトラブル - ブロックとタイムアウト

from socket import * 
sock = socket() 
sock.bind(('', 8353)) 
sock.listen(5) 
sock.accept() 

そして、私のラップトップ上で私が入力します:ラボ機(kh4250-39.cselabs.umn.edu)に私は、Pythonに次のように入力し、両方のマシンがブロック

from socket import * 
sock = socket() 
sock.connect(('kh4250-39.cselabs.umn.edu', 8353)) 

た時点で、クライアントがタイムアウトするか、SIGINTを送るまで何もしないでください。このコードは、私がオンラインで見つけた例とMark LutzのProgramming Programming Pythonのプログラミング例からかなり正確にコピーされています(サーバーのホスト名は明らかにOSのデフォルトを使用していて、かなり一般的です)。自分のコンピュータで両方の端末を実行し、ホスト名に 'localhost'を使用すると正常に動作するので、片方または両方の端末で使用しているホスト名に問題があると思われます。私は本当にこのような単純な例で何がうまくいかないのかは分かりません。誰にもアイデアはありますか?

+0

おそらく、このようなパケットフィルタなどがあります。 – glglgl

答えて

1

良い方法が問題の宛先ホストにコマンドラインからtelnetを実行することです:

% telnet kh4250-39.cselabs.umn.edu 8353 
Trying 128.101.38.44... 

そしてそう後でmetime:

telnet: connect to address 128.101.38.44: Connection timed out 

それだけTryingであっハングアウト後、最終的には時間が、チャンスはその特定のポート上のリモートホストへの接続がファイアウォールでブロックされている場合。それは、ネットワーク層(例えば、実際のファイアウォールまたはルータアクセスリスト)またはiptablesまたは他のホストベースのフィルタリング機構のようなホストであってもよい。

このラボ・ホストへのアクセスは、ラボまたはキャンパス・ネットワーク内でのみ可能です。ネットワーク上の教授やネットワーク管理者、または「知っている」人と話し合って、確かめてください。

0

ではなく「」「のkh4250-39.cselabs.umn.edu」にサーバーをバインドするようにしてください:

sock.bind(('kh4250-39.cselabs.umn.edu', 8353)) 

これが機能しない場合:もう一つの理由は、ポート8353をブロックするファイアウォールである可能性があります。 ...それはファイアウォールの問題だかどうかを確認する

+1

特定のバインドアドレスは役に立ちません。彼は今INADDR_ANYにバインドしています。 – EJP

関連する問題