我正在将客户端和服务器编写为单独的应用程序。有一些全局字符串都应该有权访问,以确保两者之间的正确通信。为这两个应用程序提供此类字符串的典型方法是什么?
我想一种可能的方法是将字符串放在头文件中,并用两个应用程序分发该文件。 Qt中有什么东西可用于获取与操作系统无关的位置来放置此头文件,以便两个应用程序都知道在哪里查找它吗?
我正在寻找一种受益于现有Qt库的解决方案,但任何通用方法都可以。我甚至不确定“库”是否必要,但到目前为止,Qt帮助我的应用程序与操作系统无关,我不想打破这种范式。
更新以增加清晰度:这些全局字符串将是静态和常量 - 这意味着它们在运行时不会更改,因此不需要共享内存。我只是不想在客户端有一个头文件和服务器中的头文件,然后必须始终确保它们的内容完全相同。
答案 0 :(得分:1)
编辑:QSettings
也应该这样做,就像@Amartel建议的那样。
持久且易于访问。如果您想要动态更新设置,请确保您的计划在必要时执行readSettings
和writeSettings
。我喜欢它的INI格式。
http://qt-project.org/doc/qt-4.8/mainwindows-application.html
http://qt-project.org/doc/qt-4.8/qsettings.html#details
http://qt-project.org/doc/qt-4.8/tools-settingseditor.html
QSharedMemory
也可以。
http://qt-project.org/doc/qt-4.8/qsharedmemory.html
示例:
http://qt-project.org/doc/qt-4.8/ipc-sharedmemory.html
您也可以使用QLocalServer
。
http://qt-project.org/doc/qt-4.8/qlocalserver.html
http://qt-project.org/doc/qt-4.8/qlocalsocket.html
示例:
http://qt-project.org/doc/qt-4.8/ipc-localfortuneclient.html
http://qt-project.org/doc/qt-4.8/ipc-localfortuneserver.html
希望有所帮助。
答案 1 :(得分:0)
Qt提供了许多在进程之间共享数据的方法,但是大多数方法都需要这些进程来共享一台机器。由于您正在实现客户端 - 服务器范例,我假设您的应用程序将相互交互,并且可能位于不同的计算机上。在这种情况下,最常见的方法是建立TCP连接并通过TCP套接字传输数据。连接设置可以放在配置文件中(例如QSettings
参数QSettings::IniFormat
)。