1

我正在将客户端和服务器编写为单独的应用程序。为了确保两者之间的正确通信,两者都应该可以访问一些全局字符串。向两个应用程序提供此类字符串的典型方法是什么?

我想一种可能的方法是将字符串放在头文件中,然后将该文件与两个应用程序一起分发。Qt 中是否有任何东西可以用来获取与操作系统无关的位置来放置此头文件,以便两个应用程序都知道在哪里查找它?

我正在寻找从现有 Qt 库中受益的解决方案,但任何通用方法也可以。我什至不确定“库”是否必要,但到目前为止,Qt 已经帮助我的应用程序与操作系统无关,我不想打破这种范式。

更新以增加清晰度:这些全局字符串将是静态和恒定的 - 这意味着它们在运行时不会更改,因此不需要共享内存。我只是不想在客户端有一个头文件,在服务器上有一个头文件,然后必须始终确保它们的内容完全相同。

4

2 回答 2

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

希望有帮助。

于 2013-05-13T17:04:25.973 回答
0

Qt 提供了很多在进程之间共享数据的方法,但大多数都需要这些进程共享一台机器。由于您正在实现客户端-服务器范例,我假设您的应用程序将相互交互,并且可能位于不同的计算机上。在这种情况下,最常见的方式是建立 TCP 连接,通过 TCP 套接字传输数据。连接设置可以放在配置文件中(例如QSettings使用参数QSettings::IniFormat)。

于 2013-05-13T17:00:43.537 回答