Boost::Asio的IOCP CompletionKey?

Boost::Asio的IOCP CompletionKey?,boost,boost-asio,iocp,Boost,Boost Asio,Iocp,我正在使用Boost::Asio创建TCP服务器。我必须跟踪每个客户端的数据包时间。IO操作完成后,我可以使用GetQueuedCompletionStatus返回的完成键轻松识别每个客户端。我找不到使用Boost::Asio实现这一点的方法 我如何实现这一点或是否有其他选择?我不确定是否正确理解了您的问题: 将所有与客户机相关的状态(套接字、地址等)存储在一个类(如中的会话类)中有什么错?然后,例如,您可以在调用async::write操作时启动计时器 boost::asio::async_w

我正在使用
Boost::Asio
创建TCP服务器。我必须跟踪每个客户端的数据包时间。IO操作完成后,我可以使用
GetQueuedCompletionStatus
返回的完成键轻松识别每个客户端。我找不到使用
Boost::Asio
实现这一点的方法


我如何实现这一点或是否有其他选择?

我不确定是否正确理解了您的问题: 将所有与客户机相关的状态(套接字、地址等)存储在一个类(如中的会话类)中有什么错?然后,例如,您可以在调用
async::write
操作时启动计时器

boost::asio::async_write(socket_,
      boost::asio::buffer(data_, bytes_transferred),
      boost::bind(&session::handle_write, this,
        boost::asio::placeholders::error));
并停止写入完成处理程序
handle\u write
中的计时器,写入完成后asio将调用该计时器

void handle_write(const boost::system::error_code& error)
或者,您可以轻松地使用来保持状态。例如,如果您调用异步写入操作,您将使用一些附加参数指定通常具有类似于
handle\u write
签名的处理程序,并将附加参数绑定到调用

如果这不能回答您的问题,请对您的问题进行进一步解释,以便有人能更好地帮助您