我需要一些提示:我正在编写一个 tcp 数据库服务器,它可以容纳 100 个字符串(我使用字符串向量来保存数据)。到目前为止,我实现的基本功能是:
客户端发送:PUT "index" "value" - 字符串被放入向量[index]。
客户端发送:GET "index" - vector[index] 被发送到客户端
我的工作基于 boost::asio 异步回显服务器示例 http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp
现在,我想将服务器的功能扩展到:
仍然未解决1. 能够在启动时从文件加载向量的起始内容并在退出时保存。
已解决2. 在数据库元素上设置计时器:vector[index] 中字符串的生存期应为 30 秒,如果在输入的 30 秒内,新数据未到达 vector[index],则应删除内容。
剩下的唯一问题是在退出/启动时保存/加载矢量数据。由于该向量仅包含 100 个字符串,因此我可以使用 fstream 简单地读取/写入,但触发保存时遇到问题。
我的异步服务器的主要功能包含: io_service.run(); 如何在运行服务器期间通过按键触发操作?我的第一个猜测是来自用户输入的 async_read,如http://www.boost.org/doc/libs/1_51_0/doc/html/boost_asio/example/chat/posix_chat_client.cpp示例。还有其他想法吗?