BOOST :: ASIO TCP数据库服务器
boost::asio tcp database server
我需要一些提示:我正在编写一个可以容纳100个字符串的TCP数据库服务器(我使用字符串向量保存数据)。到目前为止,我实现的基本功能是:
客户端发送:put" index" value" - 字符串放在矢量[index]中。
客户端发送:获取"索引" - 向量[索引]发送到客户端
我的工作基于boost :: asio async echo服务器示例http://www.boost.org/doc/libs/1_39_0/doc/html/boost_asio/example/echo/echo/ashync_tc_tcp_echo_echo_server.cpp
现在,我想将服务器的功能扩展到:
仍然未解决 1.能够从启动时从文件加载向量的启动内容并将其保存在退出中。
已解决的 2.将计时器放在数据库元素上:vector中字符串的寿命[index]应为30秒,如果输入的30秒内,新数据不会到达向量[index]内容应删除。
剩下的唯一问题是在退出/开始时保存/加载向量数据。由于向量仅包含100个字符串,因此我可以简单地使用FSTREAM读取/写作,但是我在触发保存方面遇到了问题。
我的异步服务器的主函数包含:io_service.run();如何通过在运行服务器期间按键来触发操作?我的第一个猜测是从用户输入中的async_read,如http://www.boost.org/doc/libs/1_51_0/doc/html/boost/boost_asio/example/chat/chat/posix_chat_chat_chat_chat_chat_client.cpp xpemend。还有其他想法吗?
我会通过保存时间戳,并在查找时通过保存时间戳,然后检查条目是否已过期。如果没有人询问该条目是否仍然有效,则无需使用计时器唤醒CPU。
另外,只要您在网络代码和数据库实现之间有适当的抽象,就可以将数据库调整为最合适的任何内容。如果有最大数量的条目并且它们都适合内存,那么vector
都很好,而SQLITE可能是过高的。
使用redis或memcached,因为它们已经有价值的时间可以生存。两者都有C 驱动程序。
- 查询SQLite数据库中的日期
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何在ArangoDb AQL查询中指定数据库
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 从数据库实时显示QT c++中的数据
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从服务器传输到客户端的消息不会出现
- 调试编译的服务器在数据库打开时崩溃
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- BOOST :: ASIO TCP数据库服务器
- 本地数据库的密码解决方案,在客户端和服务器之间传递
- 基于服务器的嵌入式数据库
- Cocos2dx C++将游戏数据发送到远程服务器上的MySQL数据库
- 无法从我的二进制文件访问远程服务器中的数据库
- r语言 - 如何直接在数据库服务器上运行C++进程以避免传输数据集
- 我可以使用mysql_real_connect连接到服务器而不提及使用mysql/C的数据库吗
- C++应用程序如何在不让MySQL服务器接受远程连接的情况下访问远程MySQL数据库