我正在使用Boost Asio编写C++客户端/服务器应用程序。我有一个工作服务器,服务器工作流程是我理解的很好的东西。使用Boost Asio通过TCP套接字执行异步写入操作
我的客户端应用程序按照Asio示例中所示的方式处理连接,然后与服务器交换握手信息。然而,在那之后,用户应该能够在他们想要的时间和方式上向服务器发送请求,这是我理解该范例时遇到的问题。
最初的工作流程是这样这样一点点:
OnConnected() { SendHandshake() }
SendHandshake() { async.write_some(handshake...), async_read_some(&OnRead) }
OnRead() { ReadServerHandshake() *** }
而且,用户将通过使用写入发送消息(MSG):
Write (msg) { async_write_some(msg,&OnWrite), async_Read_some(&OnRead) }
OnWrite() {}
编辑:改写问题更清晰,这里是场景:
初始握手完成后,客户端仅用于发送请求到服务器呃,它会得到答复。因此,例如,用户发送写入。客户端等待读取操作完成,读取回复并执行相关操作。接下来的用户写作只会在5分钟后才会出现。在此期间io_service是否会停止工作,因为在最后一次回复读取和下一次写入之间没有未完成的异步操作?
我会试试这个,谢谢。 – skali 2012-03-10 13:13:19