Чат HLW — инструмент для чата с несколькими людьми, разработанный с использованием технологии сетевого программирования Linux C.
Установка и развертывание
git clone https://github.com/fujie-xiyou/chat_room.git
Затем импортируйте chat_room.sql
в свою базу данных и измените информацию о базе данных в config.json
Наконец, если в ./chat_room_srv
не будет обнаружено ошибок, сервер запустится успешно.
Затем измените адрес сервера в config.json и, наконец, ./chat_room_cli
Пожалуйста, сначала зарегистрируйте аккаунт
Демонстрационное видео
Видео-демонстрация чата
Обзор проекта
- Этот проект представляет собой чат с символьным интерфейсом, разработанный с использованием технологии сетевого программирования Linux C. Основные функции включают регистрацию пользователя и вход в систему, добавление друзей, приватный чат, создание группового чата, приглашение друзей присоединиться к групповому чату, групповой чат, просмотр записей чата и т. д. передача файлов, подождите.
Дизайн проекта
- Этот проект разработан на основе модели C/S и разделен на две части: клиентскую и серверную. Клиент напрямую подключается к серверу и обменивается данными с сервером в обоих направлениях. Сервер используется для получения сообщений от клиента. и пересылать их целевому пользователю, вся работа по сохранению данных также выполняется на стороне сервера.
- Код проекта разработан с использованием многоуровневой идеи. Клиент состоит из уровня интерфейса и уровня бизнес-логики (уровня запросов), а сервер состоит из уровня бизнес-логики и уровня персистентности. Структура кода следующая:
- Проектирование базы данных
- Когда разрабатывался этот проект, я не изучал систематически курсы, связанные с базами данных, но позже, когда я рассмотрел структуру базы данных этого проекта, я обнаружил, что она соответствует парадигме BC.
- Некоторые примеры базы данных проекта показаны на рисунке.
- Разработка функции передачи файлов. Поскольку клиент и сервер этого проекта используют JSON для взаимодействия данных, для передачи файлов требуется специальная обработка. Поэтому ниже приводится краткое описание метода обработки передачи файлов.
- Как показано на рисунке, после того, как пользователь вводит имя файла для отправки, система использует системный вызов open(), чтобы открыть файл, затем использует системный вызов read(), чтобы прочитать содержимое файла из указанных байтов, и записывает возвращаемое значение чтения в размер поля пакета данных, а затем использует base6 для чтения содержимого файла. 4. Перекодируйте, запишите результат в поле данных пакета данных, а затем отправьте пакет данных получателю, а затем определите, все ли файлы были отправлены, на основе размера считанного возвращаемого значения, если чтение возвращается. значение меньше параметра размера чтения. Затем закройте файл, в противном случае продолжите чтение, перекодирование и отправку.
- После получения пакета файлов получатель декодирует данные в двоичном формате, а затем добавляет данные в буфер, который сохраняет результат перекодирования данных в файл в соответствии со значением размера.