我需要一些提示: 我正在写一个tcp数据库服务器,它可以容纳100个字符串(我使用了字符串向量来保存数据)。到目前为止,我实现的基本功能是:boost :: asio tcp数据库服务器
客户端发送:PUT“index”“value” - 将字符串放入向量[index]中。
客户端发送:GET“指标” - 矢量[索引]被发送到客户端
我根据我的工作升压:: ASIO异步回声服务器的例子 http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/echo/async_tcp_echo_server.cpp
现在,我想扩展功能服务器的地址为:
仍未解决 1.能够在启动时从文件加载vector的起始内容并将其保存在exit上。
解决上数据库元素 2.将定时器:在载体[指数]串的寿命应为30秒,如果内输入的30秒,新数据不会到达矢量[索引]的含量应擦除。
剩下的唯一问题是在退出/开始时保存/加载矢量数据。由于vector只包含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示例。任何其他想法?
检查boost :: chrono - 如果您想避免ntp /夏令时/其他时钟更改出现问题,最好不要使用挂钟时间。 steady_clock和steady_timer会做你想做的。你可能想看看boost的序列化,以保存/加载,但可能会矫枉过正。 – sje397