Boost :: Asio聊天示例程序---如何实现私聊

时间:2016-08-20 05:43:56

标签: c++ boost boost-asio

我正在通过聊天示例应用程序学习boost :: asio。在该示例中,它向所有参与者发送消息。我想在其中添加一个私人聊天功能(使用服务器作为中继的私人聊天)。

为了简单起见,我们假设我们只有两个客户,A和B. To 我的想法是,如果我将A和B的套接字连接到地图中。之后,如果A想要与B交谈,我搜索A的套接字的地图(从而找到B的套接字),然后将消息发送到B的套接字。

然而,这似乎是一项相当困难的任务。有办法吗?

1 个答案:

答案 0 :(得分:1)

当然可以。

如果您正在查看c ++ 11示例,那么您可以执行以下操作:

  1. chat_server.cpp
  2. 中为chat_participant添加新属性(ID)
  3. register_client中添加chat_client.cpp功能,该功能会向每个客户端注册一个ID。
  4. 更改chat_room::deliver

    中的以下代码行
    for (auto participant: participants_) {
        if(participant->id == recipient_id)
            participant->deliver(msg);
    }
    
  5. 以上只是为了让您大致了解如何执行此操作。

    希望这是有道理的。