我通过聊天示例应用程序学习boost :: asio。在该示例中,它向所有参与者发送消息。我想添加一个私人聊天功能(私人聊天使用服务器作为中继)。Boost :: Asio聊天示例程序---如何实现私聊
为了保持简单的问题,我们假设我们只有两个客户端A和B.到 我认为如果在连接时将A和B的套接字保存到地图中,之后,如果A想要与B交谈,我搜索A的套接字(从而找到B的套接字),然后将消息发送到B的套接字。
但是,这似乎是一个相当困难的任务。有没有办法做到这一点?
我通过聊天示例应用程序学习boost :: asio。在该示例中,它向所有参与者发送消息。我想添加一个私人聊天功能(私人聊天使用服务器作为中继)。Boost :: Asio聊天示例程序---如何实现私聊
为了保持简单的问题,我们假设我们只有两个客户端A和B.到 我认为如果在连接时将A和B的套接字保存到地图中,之后,如果A想要与B交谈,我搜索A的套接字(从而找到B的套接字),然后将消息发送到B的套接字。
但是,这似乎是一个相当困难的任务。有没有办法做到这一点?
当然可以。
如果您正在寻找在C++ 11例,那么你就可以做到以下几点:
chat_server.cpp
register_client
功能chat_client.cpp
,它向每个客户注册一个id。变化的代码chat_room::deliver
for (auto participant: participants_) {
if(participant->id == recipient_id)
participant->deliver(msg);
}
以上是以下行只是给你如何做到这一点的一般概念。
希望它是有道理的。
这不是一件困难的事情。您必须阅读文档,并通过互联网查看示例。谷歌吐出了很多示例用法。从你刚才提到的开始,然后尝试一个聊天室。一台服务器多台客户机之后,你很熟悉boost :: asio。 – Blacktempel