我通過聊天示例應用程序學習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