【发布时间】:2012-03-09 23:56:28
【问题描述】:
我正在借助 Boost Asio 用 C++ 编写客户端/服务器应用程序。我有一个工作的服务器,服务器工作流程是我很了解的。
我的客户端应用程序优雅地处理连接,如 Asio 示例所示,之后,它与服务器交换握手。然而,在那之后,用户应该能够在他们想要的时间和方式向服务器发送请求,这就是我理解范式的问题。
最初的工作流程是这样的:
OnConnected() { SendHandshake() }
SendHandshake() { async.write_some(handshake...), async_read_some(&OnRead) }
OnRead() { ReadServerHandshake() *** }
用户会使用 Write(msg) 发送消息:
Write (msg) { async_write_some(msg,&OnWrite), async_Read_some(&OnRead) }
OnWrite() {}
编辑:为了更清楚地表述问题,这里是场景:
初始握手完成后,Client 仅用于向服务器发送请求,并在服务器上得到回复。因此,例如,用户发送写入。客户端等待读取操作完成,读取回复并对其进行处理。下一个用户写入只会在 5 分钟之后出现。 io_service 是否会同时停止工作,因为在上一次回复读取和下一次写入之间没有未完成的异步操作?
【问题讨论】:
标签: asynchronous tcp boost-asio