Python KeyboardInterrupt не работает с socket.connect - PullRequest
0 голосов
/ 14 мая 2018

Запуск Python 2.7.6 в Windows 7.

У меня есть небольшой скрипт, который открывает сокет, отправляет некоторые данные по нему и ждет ответа. Я пытаюсь получить Ctrl-C для немедленного выхода из сценария , если он застревает при попытке подключения (например, сервер не прослушивает). Если я спамлю Ctrl-C, скрипт в конце концов завершается, но не с помощью try / исключением.

Первоначально я запускал это в Терминале PyCharm, но подозревал, что в IDE может быть ошибка Ctrl-C, но я также не получаю никаких результатов в CMD. Ctrl-Pause / Break действительно закрывает скрипт, но я не могу использовать его в терминале PyCharm.

Я что-то не так делаю или так работают сокеты?

import socket
import sys

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    print("Trying to connect...")
    s.connect(("192.168.0.100", 80))
    s.sendall("Hello world")
except KeyboardInterrupt:
    print("Interrupted, exiting.")
    s.close()
    sys.exit(1)

print("Waiting for response...")
data = s.recv(1024)
s.close()

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