import socket def run_tcp_server(): # Создаем TCP сокет server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Разрешаем повторное использование адреса server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # Привязываем сокет к адресу и порту server.bind(("0.0.0.0", 10000)) # Начинаем прослушивание (максимум 1 подключение в очереди) server.listen(1) print("🚀 TCP сервер запущен на порту 10000") print("Ожидание подключений...") try: while True: # Принимаем подключение conn, addr = server.accept() print(f"✅ Подключение установлено от {addr}") with conn: while True: # Получаем данные от клиента data = conn.recv(1024) if not data: break message = data.decode().strip() print(f"📨 Получено сообщение: '{message}'") # Проверяем команду завершения if message.upper() == 'EXIT': conn.sendall("🛑 Сервер завершает работу...".encode("utf-8")) print("🛑 Получена команда EXIT, завершение работы сервера") return # Модифицируем сообщение и отправляем обратно modified_message = f"🔄 ECHO: {message.upper()}" conn.sendall(modified_message.encode()) print(f"📤 Отправлен ответ: '{modified_message}'") except KeyboardInterrupt: print("\n🛑 Сервер остановлен пользователем") finally: server.close() print("🔒 Сокет сервера закрыт") if __name__ == "__main__": run_tcp_server()