Реализация клиент серверного чата Qt c++

190
22 апреля 2018, 23:23

Здравствуйте, мне нужно реализовать данные вещи: - Я написал простенький чатик, но не могу понять, как реализовать личные сообщения(в голову приходит только дескриптор(да я не шарю толком))? - И как можно реализовать авторизацию пользователя? Думаю создать бд где будут храниться данные и из них брать. - И может тупой вопрос, но. Пример для чата брал из книги Шлее Qt 5.3 этот чат идет по локальной сети. При listen сервера указывается Hostadress::any, а в клиента connectToHost("localhost","2222"), но при вводе вместо localhost ip моего пк(ip узнавал с помощью яндекса) клиент не находит сервер.

Answer 1

Есть большая разница между сетевым чатом, в котором в качестве сервера выступает один из клиентов и веб-чатом, который позволяет общаться по сети интернет.
Для полноценного интернет-чата вам потребуется:
1) сервер с белым ИП.
Как правило сервер покупается у хост-провайдера (амазон/дижитал оушн и т.п.)
2) БД
Разворачивается на сервере. Структура БД определяется вашими потребностями.
Например, вам нужна авторизация и личные сообщения, что значит, что у вас будут как минимум две таблицы: Пользователи и Сообщения
3) Сервер чата
Приложение, предоставляющее апи для пользователей чата, с помощью которого они могут авторизоваться и отправлять/получать сообщения.
Сервер чата будет общаться напрямую с вашей БД и основная его работа будет в приеме и отправке данных пользователям.
Трендовым механизмом для реализации АПИ в вебе является REST, но существуют и иные способы.
4) Клиент чата
Приложение, устанавливаемое на конечной машине пользователя.

Общая схема взаимодействия.
* Авторизация
Клиент чата шлет серверу запрос вида "Авторизуй меня, вот мой логин и пароль"
Сервер проверяет корректность логина и пароля (т.е. наличие их в вашей БД) и шлет в ответ клиенту токен авторизации (т.е. циферки, которые клиент может использовать в дальнейшем для идентификации на сервере, чтобы каждый раз не слать логин и пароль)
* Отправка сообщений
Клиент чата шлет серверу запрос "Новое сообщение для юзернейм, текс, токен авторизации).
Сервер проверяет, что токен авторизации существует в системе и правилен, проверяет юзернейм получателя и сохраняет текст в БД.
В БД можно хранить примитивно: от кого, кому, текст сообщения и маркер "Отослано клиенту"
* Прием сообщений
Клиент чата шлет на сервер запрос "Есть ли для меня сообщения, вот мой токен".
Сервер проверяет токен, идентифицирует клиента и проверяет его сообщения, для которых маркер "Отослано клиенту" равен "Не отослано". Все эти сообщения собираются и отправляются клиенту.
Клиент чата получает от сервера ответ с сообщениями и отображает их.

Это очень примерная схема реализации примитивного веб-чата

READ ALSO
с++ помогите с задачей [требует правки]

с++ помогите с задачей [требует правки]

только начал программировать и тут проблемка:

187
Закрытия массива потоков

Закрытия массива потоков

Мне необходимо создать приложение, в котором происходит перемножение двух квадратных матрицПри этом пользователю предоставляется сделать...

155
Как сделать вывод из текстового файла слов в которых символ m повторяется ровно 3 раза c++? [требует правки]

Как сделать вывод из текстового файла слов в которых символ m повторяется ровно 3 раза c++? [требует правки]

Вывод из текстового файла слов в которых символ m повторяется ровно 3 раза c++ добавить к коду ниже

180