C++ 多线程客户端上的BOOST教程?

C++ 多线程客户端上的BOOST教程?,c++,boost,C++,Boost,除了BOOST网站上的教程外,还有关于多线程客户端的好教程吗? 一个多线程客户端,可以处理向服务器发送数据的过程,同时还可以打印服务器正在发送的内容。 例如:用户输入并发送到服务器的线程,以及处理套接字并从服务器接收信息并在cout上打印的线程。您提供的链接是如何使用boost::asio库的极好指南。 一旦您了解了它的工作原理,您将能够在没有多个线程的情况下做您想做的事情 asio(异步IO)的思想是在IO_服务对象完成操作后给您回电话。无论何时调用aync_xxx,都会向其传递一个函数指针(

除了BOOST网站上的教程外,还有关于多线程客户端的好教程吗? 一个多线程客户端,可以处理向服务器发送数据的过程,同时还可以打印服务器正在发送的内容。
例如:用户输入并发送到服务器的线程,以及处理套接字并从服务器接收信息并在cout上打印的线程。

您提供的链接是如何使用boost::asio库的极好指南。 一旦您了解了它的工作原理,您将能够在没有多个线程的情况下做您想做的事情

asio(异步IO)的思想是在IO_服务对象完成操作后给您回电话。无论何时调用aync_xxx,都会向其传递一个函数指针(或函子),操作完成后将调用该指针。这样,您就不必在轮询IOs时有单独的线程阻塞

例如,您希望从服务器读取消息,一旦完成。给do_打电话(信息和消息)。这正是示例代码所做的

由于TCP是一种基于流的协议,没有自然的消息边界,因此必须在其上定义自己的消息格式。在本例中,它为此定义了一个chat_message类

要读取消息,客户机遵循以下步骤,每个步骤都是在上一个async_xxx操作完成后回调的结果。它还依赖于这样一个事实,即只有在读取指定的确切字节数或发生错误时,异步_读取才会完成

  • 调用异步连接,将句柄连接作为其回调传递
  • handle\u connect调用async\u read,将handle\u read\u头作为其回调传递
  • handle\u read\u头调用async\u read,传递handle\u read\u body作为其回调
  • handle\u read\u body最终将调用async\u read,并将handle\u read\u头作为其回调传递,以便该过程在下一条消息中重复自身
  • 注意,在示例中,在调用async_read之前,它在步骤4中执行了“cout.write…”您只需将“cout.wirte..”部分替换为您的do_something(msg)。


    写入部分遵循一个类似的回调链,唯一的区别是当没有更多消息要写入时,该链会断开,因此我们需要检查条件并重新启动它。

    您是在询问使用asio还是其他什么?你能在Boost网站上提供这个例子的链接,让人们知道你在说什么吗?是的,io_服务。