簡體   English   中英

無論如何在Python SocketServer.TCPServer中檢測客戶端斷開連接?

[英]Is there anyway to detect a client disconnect in Python SocketServer.TCPServer?

我嘗試了下面的代碼沒有成功。 基本上,我需要一種方法來檢測客戶端斷開連接。 我想避免一個討厭的心跳類型系統。 無論如何都要檢測套接字何時不再打開(客戶端已斷開連接或已斷開/等)?

class ThreadedTCPRequestHandler(SocketServer.StreamRequestHandler):
    def handle(self):
        while True:
            self.data = self.rfile.readline().strip()
            if not self.data:
                print 'Client closed connection'
                break

我認為這樣可行,但似乎沒有(也嘗試刪除了strip())。 有人有想法么?

通常,檢測到客戶端已“無聲”不可用是不可能的。 除非客戶端以托管方式關閉連接(即執行FIN四向握手),否則服務器將不會檢測到死客戶端,除非它嘗試與客戶端通信並且失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM