0

基本逻辑如下

主线程:

for(;;) {
接受套接字
异步读取头(数据包长度),绑定到 head_handler
io_service.run() }

head_handler(非线程):

async_read body(使用从 head 读取的长度),绑定到 body_handler

body_handler(非线程):

将消息解析为请求对象(自定义类)。
将请求推送到 request_pool

读线程:

for(;;) {
如果 request_pool 不为空(否则锁定) { 执行请求描述的操作 } }

所以我有一个使用上述逻辑的简单回显服务器。它打印出传入的任何消息。但是,只会显示第一条消息,所有其他消息都会正确打印出“xxx.xxx.xxx.xxx connected”消息。但是没有消息被打印

4

1 回答 1

2

如果你不发出任何异步。中的操作body_handlerio_service用完工作并io_service::run()退出。在任何后续调用之前,io_service::run()您必须调用io_service::reset().

于 2013-11-11T20:40:58.373 回答