我正在使用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()
通常我会通过套接字写一个命令,并期望在一定时间内回复。所以我的问题是:从套接字文件对象中读取一行时有没有办法实现超时?
谢谢,
答案 0 :(得分:2)
取自Python's documentation about socket.makefile()
:
socket.makefile([mode [,bufsize]])
返回与套接字关联的文件对象。 (文件对象在文件对象中描述。)文件对象引用套接字文件描述符的dup()ped版本,因此文件对象和套接字对象可以独立关闭或垃圾收集。 套接字必须处于阻塞模式(它不能超时)。可选模式和bufsize参数的解释方式与内置file()函数的解释方式相同。
因此,你不能在套接字文件上超时,如果你需要超时,你必须使用常规套接字。