2011-08-02 15 views
1

私は別のプロセスに話をファイルとしてPythonのソケットを使用しています:pythonソケットファイルの読み取りタイムアウト?

def connect(self): 
    try: 
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     self.sock.connect((self.target, self.port)) 
     self.fobj = self.sock.makefile() 

通常、私はソケットを介してコマンドを記述し、一定期間内に応答を期待したいです。だから私の質問です:ソケットファイルオブジェクトから行を読み取るときにタイムアウトを達成する方法はありますか?

おかげで、Python's documentation about socket.makefile()から撮影

+0

[settimeout()](http://docs.python.org/library/socket.html#socket.socket.settimeout)を使用しようとしましたか? – brandizzi

+0

**タイムアウトを達成する方法**を言って正確にはどういう意味ですか、例外をキャプチャするよう求めていますか? –

答えて

2

socket.makefile([モード[、BUFSIZE]])

戻りソケットに関連付けられたファイルオブジェクト。 (ファイルオブジェクトはファイルオブジェクトに記述されています)。ファイルオブジェクトは、ソケットファイル記述子のdup()pedバージョンを参照するため、ファイルオブジェクトとソケットオブジェクトは独立して閉じられるか、ガベージコレクションされます。 ソケットはブロックモードでなければなりません(タイムアウトはできません)。オプションのmode引数とbufsize引数は組み込みのfile()関数と同じ方法で解釈されます。

したがって、ソケットファイルにタイムアウトを設定することはできません。タイムアウトが必要な場合は、通常のソケットを使用する必要があります。

関連する問題