TCP соединение в питоне. Знаете ли вы, как распечатать таймер, пока сокет ожидает принятия запроса на соединение? - PullRequest
0 голосов
/ 05 января 2019

Я установил таймер в розетку. Если в течение 30 секунд он не получил ни одного запроса на соединение, программа завершает работу. В любом случае, я хотел бы напечатать эти 30 секунд в стандартный вывод в качестве таймера, чтобы пользователь мог видеть, сколько секунд осталось. Если есть запрос на подключение до истечения таймера, я бы хотел остановить таймер и продолжить выполнение кода, как будто ничего не произошло. Любая помощь? Это фрагмент моего кода:

while True:

    try:
        s_TCP.settimeout(30) 
        print ("Waiting for a connection...")
        s_TCP.listen(1)

        #I'd like to set the timer here

        connection, addr= s_TCP.accept()
        print ("\nConnection established")


    except socket.timeout:
        print ("Timer expired")
        s_TCP.close()
        sys.exit()

    except socket.error:

        print ("Couldn't connect to the client")
        s_TCP.close()
        sys.exit()

Заранее спасибо !!

1 Ответ

0 голосов
/ 05 января 2019

Тривиальный ответ - установить более короткий тайм-аут и попытаться accept несколько раз. Поскольку сокет уже listen, никакие попытки соединения не будут потеряны «между» вызовами на accept. Не забудьте сбросить тайм-аут на большее значение после принятия соединения.

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