Чат-приложение
Описание проекта
Данное приложение представляет собой реализацию базового системы чата на Python, использующем сокеты для обеспечения сетевого взаимодействия между пользователями. Приложение включает клиентскую и серверную части, что позволяет пользователям регистрироваться, входить в систему и обмениваться сообщениями в реальном времени.
Структура приложения
Клиентская часть (app.py)
Клиентская часть отвечает за взаимодействие с пользователем и выполнение следующих задач:
-
Подключение к серверу:
- Программа устанавливает соединение с сервером по IP-адресу и порту, получая локальный IP-адрес устройства.
-
Регистрация и авторизация:
- Пользователь может создать новый аккаунт, предоставив уникальный логин и надежный пароль (не менее 8 символов).
- Система проверяет существование логина и корректность пароля. Если логин верный, пользователь успешно авторизуется.
-
Шифрование сообщений:
- Программа использует словарь кодов для шифрования текстов перед их отправкой. При получении сообщений закодированный текст расшифровывается с помощью обратного алгоритма.
-
Обмен сообщениями:
- Пользователи могут отправлять и получать сообщения. Программа поддерживает возможность отправки пустых сообщений, которые обрабатываются корректно.
- При получении сообщения пользователю выводится текст, а также отправитель.
-
Интерфейс взаимодействия:
- Программа предоставляет простой текстовый интерфейс для выбора действий: вход в систему, регистрация или выход.
Серверная часть (server.py)
Серверная часть игры играет ключевую роль в управлении пользователями и средой общения:
-
Прослушивание и обработка подключений:
- Сервер ожидает подключения от клиентов и создает новый поток для каждого соединения, позволяя вести параллельный обмен сообщениями между несколькими пользователями.
-
Управление пользователями:
- Сервер хранит данные о зарегистрированных пользователях, их статусах и онлайн-статусе.
- При регистрации нового пользователя вновь созданные учетные данные сохраняются в файле на сервере.
-
Обработка запросов:
- Сервер отвечает на запросы клиентов, проверяя существование логинов, корректность паролей и предоставляя возможность для создания, удаления учетных записей и обмена сообщениями.
-
Логирование и обработка ошибок:
- При каждом действии сервер выводит лог событий в терминал, что улучшает отслеживание работы приложения и упрощает обнаружение проблем.
Шифрование и безопасность
Приложение реализует базовый механизм шифрования текстов, где каждую букву заменяет на уникальный код из заранее заданного словаря. Например:
codes = {
'а': 'p1vTLSEE',
'б': 'lLS4As63'
# и т. д.
}Система также использует обратный словарь для расшифровки сообщений. Этот подход помогает поддерживать уровень конфиденциальности, но стоит отметить, что он не является защищенным с точки зрения современных стандартов криптографии.
Ограничения и будущее развитие
На данный момент приложение обладает базовым функционалом, что делает его подходящим для изучения принципов разработки клиент-серверных приложений. В будущем предположительно можно реализовать следующие функции:
- Улучшение криптографии с использованием устойчивых методов шифрования, таких как AES.
- Внедрение графического интерфейса для повышения удобства пользователя.
- Реализация группового чата, позволяющего нескольким пользователям общаться одновременно.
- Добавление системы уведомлений для информирования пользователей о новых сообщениях.
- Логирование действий пользователей для повышения уровня безопасности и отслеживания активности.
Проект является образцом реализации основ клиент-серверной модели чата и предоставляет отличную базу для дальнейшего развития и улучшения.