基本逻辑如下
主线程:
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”消息。但是没有消息被打印