Проект представяет собой учебный чат-мессенджер на Python. Состоит из клиентской и серверной частей. Сетевое взаимодействие осуществляется с использованием сокетов. Сервер использует библиотеку select для работы с несколькими клиентами сразу. Для обмена сообщениями используется протокол JIM. Клиент и сервер имеют как консольную, так и графическую версии. Последняя предпочтительнее по удобству и полноте поддерживаемого функционала. Графический интерфейс пользователя реализован с использованием PyQT5. В качестве базы данных используется sqlite, при этом ORM не применяется. Реализован механизм авторизации пользователей с использованием модулей hmac и hashlib.
Рассмотрим графическую версию сервера.
В данном блоке можно задать хост и порт для сервера, а также запустить или остановить его. Если сервер запущен, в поле Status появится значение Started.
Таблица содержит историю активности клиентов: логин, дата и время последнего посещения, IP-адрес, с которого в последний раз заходил пользователь. Данные отсортированы по времени (более новые вверху).
Чтобы клиент мог пользоваться чатом, его нужно сначала зарегистрировать на сервере. Для этого в данном блоке нужно ввести его логин и пароль, затем нажать кнопку Add client.
В данное поле выводится вся информация о работе сервера: служебные данные, сообщения об ошибках, а также все сообщения, которые принимает и отправляет сервер, плюс информация о подключениях и отключениях клиентов.
Рассмотрим графическую версию клиента.
Для начала работы нужно ввести данные для соединения с сервером:
User name- логинPassword- парольServer IP- адрес или имя хоста сервераServer port- номер порта, на котором работает сервер
Кнопка Connect позволяет выполнить подключение к серверу, кнопка Disconnect - отключение.
Когда клиент успешно подключился к серверу, в данном блоке отображается информация о подключении: логин пользователя, адрес хоста и номер порта сервера.
В блоке Contacts отображается список контактов пользователя. Чтобы добавить новый контакт, нужно ввести логин в поле Add contact и нажать кнопку Add. После этого можно писать данному пользователю сообщения. Если клиенту приходит сообщение от контакта, которого ещё нет в списке, то он автоматически там появляется.
Для удаления контакта нужно выбрать его из списка и нажать кнопку Delete selected contact.
Для отправки сообщения контакту нужно выбрать его в списке щелчком левой кнопки мыши. После этого в поле Messages появится история переписки с данным пользователем (если она была ранее). Чтобы послать ему новое сообщение, требуется ввести текст в поле Input и нажать кнопку Send. Для успешной доставки сообщения необходимо, чтобы получатель также был подключен к серверу. В противном случае сервер ответит ошибкой с текстом "client not online".
Входящие сообщения будут отображаться в Messages по их получения клиентом.
В данном блоке выводится информация о работе клиента, это служебные данные и сообщения об ошибках.
