Qt/C++ 离线存储 IM 消息
Qt/C++ store IM Messages offline
我用 Qt 开发了一个 Client/Server IM 应用程序。到目前为止,消息已在客户端发送和显示,但是当程序关闭时,消息不再可用,因为缺少适当的存储。
我想将消息保留在客户端设备上,避免将所有内容都存储在服务器上。我也不想使用数据库,因为它需要安装,而且我想让一切都变得很简单。
因此我想简单地将所有内容存储在一个加密文件中,但我想不出合适的格式来做到这一点。
有没有人有这方面的经验或关于如何保存来自不同客户端的消息的建议?
由于代码错误、瞬态硬件错误、断电等原因,您确实担心软件意外终止时的数据完整性。这是每个使用 "plain files" 的人通常遇到的问题忽略,因为这是一个很难解决的问题,需要大量的测试和专业知识。
这就是您应该使用嵌入式数据库的原因。它将解决这个问题,以及许多其他问题。 SQLite 是像您这样的应用程序的事实标准。您可以添加任何您想要的加密,因为 SQLite 提供了钩子,可以让您实现页面的写入和读取。你会在那里进行加密。
SQLite 一个鲜为人知的方面是它在开发过程中获得的测试量。测试工具,其中大部分是非 public,可能比已发布的 SQLite 代码(> 100 万美元)更有价值。 SQLite 用于航空航天应用,例如IIRC 在 DO-178B.
下分类为 DAL-B 的代码
我用 Qt 开发了一个 Client/Server IM 应用程序。到目前为止,消息已在客户端发送和显示,但是当程序关闭时,消息不再可用,因为缺少适当的存储。
我想将消息保留在客户端设备上,避免将所有内容都存储在服务器上。我也不想使用数据库,因为它需要安装,而且我想让一切都变得很简单。
因此我想简单地将所有内容存储在一个加密文件中,但我想不出合适的格式来做到这一点。 有没有人有这方面的经验或关于如何保存来自不同客户端的消息的建议?
由于代码错误、瞬态硬件错误、断电等原因,您确实担心软件意外终止时的数据完整性。这是每个使用 "plain files" 的人通常遇到的问题忽略,因为这是一个很难解决的问题,需要大量的测试和专业知识。
这就是您应该使用嵌入式数据库的原因。它将解决这个问题,以及许多其他问题。 SQLite 是像您这样的应用程序的事实标准。您可以添加任何您想要的加密,因为 SQLite 提供了钩子,可以让您实现页面的写入和读取。你会在那里进行加密。
SQLite 一个鲜为人知的方面是它在开发过程中获得的测试量。测试工具,其中大部分是非 public,可能比已发布的 SQLite 代码(> 100 万美元)更有价值。 SQLite 用于航空航天应用,例如IIRC 在 DO-178B.
下分类为 DAL-B 的代码