2015-10-07 39 views
0

我开发了一个用于使用Qt的IM的客户端/服务器应用程序。到目前为止,消息被发送并显示在客户端,但是当程序关闭时,由于缺少适当的存储,消息不再可用。Qt/C++离线存储IM消息

我想保留客户端设备上的消息,并避免将所有内容存储在服务器上。我不想使用数据库,因为它需要安装,我想保持一切都很容易。

因此,我正在考虑简单地将所有内容存储在加密文件中,但我想不出一个合适的格式来做到这一点。 有没有人有这方面的经验或任何建议如何保存来自不同客户端的消息?

回答

2

由于代码中的错误,瞬时硬件错误,停电等原因,面对计划外的软件意外终止,您确实需要关注数据完整性。这就是每个使用“普通文件”的人通常会忽略的问题,因为这是一个难以解决的问题,需要大量的测试和技术诀窍。

这就是为什么你应该使用嵌入式数据库。它会解决这个问题,还有很多其他问题。 SQLite是应用程序的事实上的标准,比如你的。你可以添加你想要的任何加密,因为SQLite提供的钩子可以让你实现页面的写入和读取。你会在那里做加密。

SQLite的一个鲜为人知的方面特别是它在开发过程中获得的测试数量。测试工具,大部分是非公开的,可能比已发布的SQLite代码(> 1M USD)更有价值。 SQLite用于航空航天应用,例如IIRC代码为DAL-B,编号为DO-178B