2012-02-25 54 views
3

私は以下のコードを無事に試してみました。基本的には、クライアントの切断を検出する方法が必要です。私は、チャット・ハートビート・タイプのシステムを避けたいと思います。とにかく、ソケットがもはや開いていないとき(クライアントが切断されているか、それとも壊れているかなど)を検出することはありますか?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 

私はこれが働くだろうと思ったが、(も削除)(ストリップを試してみました)していないようです。誰にでもアイデアはありますか?

答えて

2

一般に、クライアントが「サイレント」に利用できなくなったことを検出することはできません。クライアントが管理された方法で接続を閉じない限り(つまり、FINの4ウェイハンドシェイクを実行する)、クライアントとの通信を試みて失敗しない限り、サーバーはデッドクライアントを検出しません。

関連する問題