import socket import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s') def run_tcp_server(): HOST = '127.0.0.1' PORT = 10000 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind((HOST, PORT)) server_socket.listen(5) print(f"SERVER: TCP сервер запущен на {HOST}:{PORT}") print("SERVER: Ожидание подключений...") print("SERVER: Нажмите Ctrl+C для остановки\n") try: while True: client_socket, client_address = server_socket.accept() print(f"SERVER: Клиент {client_address} подключился") try: while True: data = client_socket.recv(1024) if not data: print(f"SERVER: Клиент {client_address} отключился") break received_text = data.decode('utf-8') print(f"SERVER: Получено '{received_text}' от {client_address}") modified_data = data.upper() client_socket.sendall(modified_data) print(f"SERVER: Отправлено '{modified_data.decode('utf-8')}'") if modified_data == b'EXIT': print(f"SERVER: Команда EXIT от {client_address}") break except ConnectionResetError: print(f"SERVER: Клиент {client_address} разорвал соединение") except Exception as e: print(f"SERVER: Ошибка с {client_address}: {e}") finally: client_socket.close() print(f"SERVER: Соединение с {client_address} закрыто\n") except KeyboardInterrupt: print("\nSERVER: Остановка сервера...") if __name__ == '__main__': run_tcp_server()