2011-08-02 116 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() 

一般情況下我通過socket寫命令,並期望在一定期限內作出答覆。所以我的問題是:是否有一種方法來實現從套接字文件對象讀取一行時超時?

謝謝,

+0

您是否嘗試過使用[settimeout()](http://docs.python.org/library/socket.html#socket.socket.settimeout)? – brandizzi

+0

你說**的方式來實現超時是什麼意思**,你是要求捕獲異常? –

回答

2

Python's documentation about socket.makefile()摘自:

socket.makefile([模式[,BUFSIZE]])

返回與插座相關聯的文件對象。 (文件對象在文件對象中描述。)文件對象引用了套接字文件描述符的dup()ped版本,因此文件對象和套接字對象可以被關閉或獨立垃圾收集。 套接字必須處於阻止模式(不能有超時)。可選模式和bufsize參數的解釋方式與內置file()函數的解釋方式相同。

因此,您不能在套接字文件上發生超時,如果您需要超時,則必須使用常規套接字。