【发布时间】:2012-04-13 06:28:44
【问题描述】:
我是 boost::asio 的新手,所以我的问题可能很愚蠢 - 如果是这样,对不起。 我正在使用 keepalive 编写异步服务器应用程序(可能在单个连接上发送多个请求)。
连接处理例程很简单:
循环中:
使用 socket->async_read_some(buffer, handler) 调度读取请求
使用 async_write 来自处理程序调度写入响应。
我面临的问题是,当 传递给 async_read_some 的 handler 由 io_service 个线程调用,buffers 实际上可能包含比单个请求更多的数据(例如客户端发送的下一个请求的一部分)。
我现在不想(如果它只是请求的一部分,也不能)处理剩余的字节。 我想在处理完之前的请求之后再做。
如果我有可能将不必要的剩余数据重新注入到套接字中,这将很容易解决。所以它会在下一次 async_read_some 调用中处理。
boost::asio 中是否有这种可能性,还是我必须将剩余的数据存储在某个地方,并使用额外的代码自己处理。
【问题讨论】:
标签: c++ boost boost-asio