Python 2.7,Windows XP。我有一臺服務器將消息發送給客戶端。我使用select模塊檢查準備接收的套接字,以及捕獲特殊條件。我的印象是,如果客戶端關閉套接字,選擇()將在異常情況插座列表返回所述窩,但它似乎並沒有被這樣做:select.select()不會捕獲套接字上的異常情況嗎?
lin, lout, lex = select.select(socklist, socklist, socklist)
for sock in lin:
# handle incoming messages
for sock in lout:
# send updates
for sock in lex:
# shut down server-side objects for particular client
,會是什麼服務器確定客戶端是否仍連接的最佳方式?服務器並不總是發送數據,所以我不想依賴一個socket.send()來測試客戶端是否仍然存在。
這樣一個特殊的條件下將被關閉套接字中間傳輸呢? – 2011-03-28 23:19:39
在這種情況下,如果我有一臺使用sock.send(msg)的服務器,我該如何判斷客戶端是否正在接收它?有沒有比settimeout()更好的方法? – 2011-03-28 23:20:44
例外列表有點不恰當。據我所知,這隻適用於OOB(帶外)數據。 – kanaka 2011-03-28 23:23:44