查找负责超时的套接字?

时间:2017-08-02 20:25:08

标签: python sockets

sock1.settimeout(2)
conn.settimeout(1) #conn comes from sock1
except socket.timeout, e:
    print <responsible socket>

有没有办法区分负责超时的套接字? 如果我有两个超时的插座,也许我做错了。

1 个答案:

答案 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