python套接字文件读取超时?

时间:2011-08-02 15:01:59

标签: python sockets

我正在使用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()

通常我会通过套接字写一个命令,并期望在一定时间内回复。所以我的问题是:从套接字文件对象中读取一行时有没有办法实现超时?

谢谢,

1 个答案:

答案 0 :(得分:2)

取自Python's documentation about socket.makefile()

  

socket.makefile([mode [,bufsize]])

     

返回与套接字关联的文件对象。 (文件对象在文件对象中描述。)文件对象引用套接字文件描述符的dup()ped版本,因此文件对象和套接字对象可以独立关闭或垃圾收集。 套接字必须处于阻塞模式(它不能超时)。可选模式和bufsize参数的解释方式与内置file()函数的解释方式相同。

因此,你不能在套接字文件上超时,如果你需要超时,你必须使用常规套接字。