使用 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 方客户端到客户端通信的主要内容,如果未能解决你的问题,请参考以下文章