Проблема с проверкой, закрыт ли сокет Python или нет.Python

Программы на Python
Ответить
Anonymous
 Проблема с проверкой, закрыт ли сокет Python или нет.

Сообщение Anonymous »

У меня есть проект, и в нем есть часть, которая требует отслеживать, какие соединения с моим сервером живы, а какие нет, и на основании этого предпринимать действия. Я много раз пытался заставить его работать, но каждый раз, когда я подключаюсь и мгновенно закрываю соединение, все работает как положено, и программа отбрасывает данные, относящиеся к этому соединению.
Однако, когда я подключаюсь и затем жду несколько секунд перед закрытием соединения, это не работает. Соединение остается активным (живым) в некоторых переменных, что портит мой алгоритм.
Есть ли правильный и эффективный способ справиться с этим?
Вот код Python:
def is_alive(sock):
try:
sock.settimeout(0)
ddt = sock.recv(16, socket.MSG_PEEK)
except BlockingIOError:
return True
except ConnectionResetError:
return False
except Exception as err:
print(err)
if err == 'timed out':
return True
else:
return False
return True


Подробнее здесь: https://stackoverflow.com/questions/798 ... sed-or-not
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»