Клиент подает на сервер данные, сервер их как-то обрабатывает и отсылает. Необходимо чтобы при вводе в cmd 'stop' сервер останавливался, или просто закрывалась консоль. Для этого написал два процесса:
1.)print_thread - ловит 'stop' в консоли
2.)client_thread - обрабатывает файл и отправляет клиенту
А дальше не знаю, что делать, из за бесконечного цикла, который ловит сообщения от клиента, не получается завершить с помощью exit() в print-prompt()
Код:
import socket
import sys
import os
import threading
class Server:
def __init__(self):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server_address = ('localhost', 10000)
self.print_thread = None
self.client_thread = None
def handle_client(self, connection, client_address):
try:
print('Подключено к:', client_address)
while True:
data = connection.recv(16)
print(f'Получено: {data.decode()}')
if data:
print('Обработка данных...')
data = data.upper()
print('Отправка обратно клиенту.')
connection.sendall(data)
else:
print('Нет данных от:', client_address)
break
finally:
connection.close()
def start_sock(self):
self.sock.bind(self.server_address)
self.sock.listen(1)
def connect(self):
print('Ожидание соединения...')
connection, client_address = self.sock.accept()
self.client_thread = threading.Thread(target=self.handle_client, args=(connection, client_address))
self.client_thread.start()
def print_prompt():
while True:
command = input()
if command == 'stop':
print('Это stop')
if __name__ == '__main__':
print_thread = threading.Thread(target=print_prompt)
print_thread.start()
server = Server()
server.start_sock()
while True:
server.connect()