Я пишу приложение в Python 2.7.5 с использованием интерфейса raw socket (import socket
).
Мне нужно знать, есть ли способ зарегистрировать какое-либо событие или легко протестировать с регулярным интервалом, если соединение сокета TCP все еще подключено и установлено.
Большинство рекомендаций, которые я нашел, говорят о таких вещах, как "просто попробуйте прочитать, если он будет закрыт, вы получите ошибку или нет байтов". Однако иногда я не готов к read
, но я все еще хочу знать, закрыт ли сокет, поэтому, например, я могу вручную повторно подключиться сразу.
Кроме того, read
ing из сокета будет удалять байты, считанные из буфера, поэтому read
просто проверять подключение "liveness" не представляется возможным.
У меня есть фоновый поток для проверки доступности подключения. Этот поток может проверять один раз в секунду, чтобы узнать, живое ли соединение; если он отбрасывается, тогда он может вызывать функцию или задавать переменную или какую-либо другую вещь, чтобы приложение узнало, что соединение закрыто. Знание WHY, которое оно закрыло (reset равным, тайм-аут и т.д.), Было бы еще более полезным....
Любые советы по этому поводу?