Задать вопрос
@Georgy123

Почему не происходит прерывания работы программы при нажатии ctrl+c?

import socket, time
import random

host = socket.gethostbyname(socket.gethostname())# получает имя машины, на которой запущен питон и конвертирует в строку IpV4
port = 9873
#print(socket.gethostname())
print(host)
clients = []

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#создание самого сокета 
s.bind((host,port))#привязывает сокет к данному адресу
while not quit:
    try:
        data,addr = s.recvfrom(1024)
        if addr not in clients:
            clients.append(addr)
        itsatime = time.strftime("%Y-%m-%d-%H.%M.%S", time.localtime())
        print("["+addr[0]+"]=["+str(addr[1])+"]=["+itsatime+"]/",end="")
        print(data.decode("utf-8"))
        for client in clients:
            if addr !=client:
                s.sendto(data,client)
    except:
        quit=True
        print("[Server stopped")		
        s.close()#при ошибке на стороне сервера прерывается бесконечный цикл принятия и пересылки и закрывается сокет

Пробовал прервать работу этой программы с помощью ctrl+c-не работает(windows 10).При аналогичных действиях, но уже на repl.it все работает корректно. Почему так происходит и как это вылечить?
  • Вопрос задан
  • 356 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
citizentwo
@citizentwo
Пробуй ждать прерывание и в конце ломай:
except KeyboardInterrupt:
    print("[Server stopped")
    s.close()
    break
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы