Завершение сервера сокетов из другой функцииPython

Программы на Python
Ответить
Anonymous
 Завершение сервера сокетов из другой функции

Сообщение Anonymous »


Я создаю сервер сокетов графического интерфейса в Python. Он принимает такие аргументы, как «начальный сервер» и «конечный сервер». Я закодировал функцию запуска сервера и связал ее с моим приложением для одновременного запуска обоих, но когда я закрываю приложение, сервер все еще работает в фоновом режиме. я хотел закрыть сервер, когда я набираю «конечный сервер» в своем приложении. Мой код выглядит так...

из импорта tkinter * импорт сокета импорт потоков защита console_win(): #функция защита start_thread(): t1 = threading.Thread(target=start_server) t1.start() защита end_server(): передать #code, чтобы завершить работающий сервер защита start_server(): ip = '192.168.1.2' порт = 8080 s = сокет.сокет(сокет.AF_INET,сокет.SOCK_STREAM) s.bind((ip,порт)) с.слушать(10) console_box.insert(END,f"Сервер запущен на {ip}:{порт}...") пока правда: cli, адрес = s.accept() print(f"Подключено к адресу: {addr}") перерыв с.закрыть() защита take_cmd(e): cmd = cmd_box_var.get() если cmd == "помощь": console_box.config(fg="красный") console_box.config(fg="лайм") с open("Assets\\cmd_files\\help.txt","r") в качестве rw: help_data = rw.read() console_box.insert(END,help_data) console_box.insert(END,"\n") console_box.insert(END,"\n") элиф cmd == "очистить": console_box.delete('1.0',END) elif cmd == "запустить сервер": start_thread() elif cmd == "конечный сервер": конечный_сервер() еще: console_box.insert(END,"\n[-] Неверная команда! проверьте меню справки с помощью команды 'help'\n") #проверяем интернет-соединение #конфигурации console_win = Тк() console_win.geometry("800x605+200+50") console_win.title("Консоль") console_win.config(bg="#252525") scrl_bar = Полоса прокрутки (console_win, ширина = 20) scrl_bar.pack(сторона=ПРАВО,заполнение=Y) console_box = Text(console_win,height=30,width=60,bg=frame_bg_color,state="normal",yscrollcommand=scrl_bar.set,font=("Arial"),fg="lime") console_box.pack() scrl_bar.config(команда = console_box.yview) cmd_box_var = StringVar (значение = «запустить сервер») Command_box = Entry(console_win,font=("Arial 30"),textvariable=cmd_box_var,bg=bg_color,fg="cyan",width=30) командный_бокс.фокус() Command_box.bind("",take_cmd) command_box.setvar("запустить сервер") command_box.pack(pady=(10,0)) console_win.mainloop() если __name__ == "__main__": #конфигурации bg_color = "#2A2A2A" Frame_bg_color = "#1F1F1F" label_fg_color = "голубой" btn_fg_color = "голубой" btn_bg_color = "#1F1F1F" enter_bg_color = "#1F1F1F" запись_fg_color = "красный" console_win() Я знаю, что threading.event может здесь помочь, но я не знаю, как его использовать. Пожалуйста, помогите мне!
Ответить

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

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

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

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

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