sock1.settimeout(2)
conn.settimeout(1) #conn comes from sock1
except socket.timeout, e:
print <responsible socket>
有没有办法区分负责超时的套接字? 如果我有两个超时的插座,也许我做错了。
答案 0 :(得分:1)
据我所知,socket.timeout
异常对象中没有任何标识套接字的内容。因此,您需要跟踪您正在阅读的套接字,这将是超时的套接字:
try:
cursock = sock1
data = sock1.recv(bufsize)
cursock = conn
data1 = conn.recv(bufsize)
except socket.timeout, e:
print cursock
或者你可以在每个try/except
电话周围包裹recv
。你可以把它放到辅助函数中:
def try_recv(sock, bufsize, flags=0):
try:
return sock.recv(bufsize, flag)
except socket.timeout, e:
print sock