Пример программы чата Boost :: Asio --- как реализовать приватный чат

c++ boost boost-asio

489 просмотра

1 ответ

Я изучаю boost :: asio, работая над приложением-примером чата. В этом примере он отправляет сообщение всем участникам. Я хочу добавить в него функцию приватного чата (приватный чат с использованием сервера в качестве реле).

Для простоты, скажем, у нас есть только два клиента, A и B. То, что я думал, было то, что если я сохраню сокеты A и B в карте, когда они подключены. После этого, если A хочет поговорить с B, я ищу карту для гнезда A (и, таким образом, нахожу гнездо B), а затем отправляю сообщение вниз в гнездо B.

Тем не менее, это кажется довольно сложной задачей. Есть ли способ сделать это?

Автор: FlatWorld Источник Размещён: 08.11.2019 10:56

Ответы (1)


1 плюс

Конечно.

Если вы смотрите на пример c ++ 11, то вы можете сделать следующее:

  1. Добавить новое свойство (id) для chat_participant в chat_server.cpp
  2. Добавьте register_clientфункцию chat_client.cpp, которая регистрирует идентификатор для каждого клиента.
  3. Измените следующие строки кода в chat_room::deliver

    for (auto participant: participants_) {
        if(participant->id == recipient_id)
            participant->deliver(msg);
    }
    

Выше, просто чтобы дать вам общее представление о том, как это сделать.

Надеюсь, это имеет смысл.

Автор: jrhee17 Размещён: 20.08.2016 06:07
32x32