Проверьте, подключен ли еще клиент - программирование Python Socket с использованием UDP - PullRequest
0 голосов
/ 13 октября 2018

Я в настоящее время разрабатываю приложение чата с использованием UDP.Как я узнаю, подключен ли клиент к моему серверу или все еще работает?Ниже приведен мой код:

 for i, addr in enumerate(self.all_addresses):    
        try:               
            self.socket.sendto(str.encode(''), ('<broadcast>', int(addr[1])))


        except e:              
            del self.all_addresses[i]
            continue

self.all_addresses содержит IP-адрес и порт клиентов, привязанных к серверу.В приведенном выше коде я проверял, отправляю ли я пустое сообщение клиенту, и он не выдает ошибку, значит, он все еще подключен.К сожалению, код не работает, даже если клиент больше не работает, код не вызывает исключения.Пожалуйста, помогите мне с моей проблемой.спасибо.

1 Ответ

0 голосов
/ 13 октября 2018

UDP не имеет понятия «соединение», поэтому вам придется реализовать эту логику на прикладном уровне.Например, пусть каждый клиент отправляет серверу пакет «Привет, я все еще здесь» каждые несколько секунд.Если сервер видит, что (несколько большее количество) секунд прошло без получения каких-либо пакетов от данного клиента, сервер может предположить, что клиент ушел.

...