2017-08-02 95 views
0
sock1.settimeout(2) 
conn.settimeout(1) #conn comes from sock1 
except socket.timeout, e: 
    print <responsible socket> 

有沒有辦法區分負責超時的套接字? 也許我做錯了,如果我有兩個套接字超時。查找負責超時的套接字?

回答

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 
+0

Oooh。這很聰明!謝謝 – Tai