Есть ли способ обнаружить отключение клиента в Python SocketServer.TCPServer? - PullRequest
3 голосов
/ 25 февраля 2012

Я попробовал приведенный ниже код без успеха.По сути, мне нужен способ обнаружить отключение клиента.Я хотел бы избежать болтливой системы сердцебиения.В любом случае можно определить, когда сокет больше не открыт (либо клиент отключен, либо он был сломан / и т.д.)?

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

Я думал, что это будет работать, но, похоже, не работаетсо снятой полосой ().У кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 25 февраля 2012

Как правило, обнаружение того, что клиент стал «тихим» недоступным, невозможно. Если клиент не закрывает соединение управляемым способом (т.е. выполняет четырехстороннее рукопожатие FIN), сервер не будет обнаруживать мертвый клиент, если он не попытается связаться с клиентом и произойдет сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...