使用 C++ 和 Boost::Asio 的 N 方客户端到客户端通信

Posted

技术标签:

【中文标题】使用 C++ 和 Boost::Asio 的 N 方客户端到客户端通信【英文标题】:N-party client-to-client communication using C++ and Boost::Asio 【发布时间】:2012-02-14 10:22:31 【问题描述】:

我一直在使用 Boost::Asio 并检查它在 n 个独立用户协作计算共享输入上的函数时的能力。

在某一时刻,我需要让每个用户向所有其他用户发送(分别接收)一些数据。

我想实际上我正在寻找每个用户的“主动”建立,而不是互联网上常见的客户端-服务器示例。

我有允许用户向另一个用户发送数据的工作代码。我很难看到我应该如何让所有用户同时相互发送和接收。我似乎也无法同时概括多个async_connects

对于如何实现这种协议有什么建议吗?我应该考虑使用线程来管理发送和接收吗?

【问题讨论】:

【参考方案1】:

如果您使用基于 Unix 的操作系统,例如 Linux,我会从使用 C 编程语言(或 C++,如果您需要)的更简单的解决方案开始,但不使用 Boost 库。只需使用普通的旧 select 系统调用即可。见manpage 和tutorial manpage。

只有在那之后,我才会切换到像 Boost 这样的花哨的东西。

另请参阅this tutorial,了解 BSD 套接字编程。

【讨论】:

我没有任何使用 asio 的经验,所以我不会认为这是一个官方的答案,但我认为 Victor 可能在类似 select 的功能上走在正确的轨道上。这里有一些看起来相关的东西:***.com/questions/910064/…

以上是关于使用 C++ 和 Boost::Asio 的 N 方客户端到客户端通信的主要内容,如果未能解决你的问题,请参考以下文章

C++ 使用 Boost.asio 和 Beast 库在正文中发送数据

C++——boost:asio的使用

boost::asio基本使用

C++ Boost asio 连接和流式传输

C++ boost::asio https 通过代理

使用 boost::asio::thread_pool 的 C++ 线程池,为啥我不能重用我的线程?