我是进程间通信的新手。我需要你的帮助和明确的解释。我有 2 个应用程序。其中一个是服务,一个是客户端。我使用 QT/C++ 来编写它们。当他们在一台本地 PC 上工作时 - 一切都很好。但我需要将它们分开。
因此,我在 IP 为 192.30.82.101 的 PC 上有一项服务。我使用下一个代码将它连接到总线:
QDBusConnection connection = QDBusConnection::sessionBus();
connection.registerObject("/my/service/MyService", mySvc);
connection.registerService("my.service.MyService");
Run Code Online (Sandbox Code Playgroud)
另外,我在另一台 IP 为 192.30.82.40 的 PC 上有一个客户端。我使用下一个代码连接我的客户端:
QDBusServiceWatcher serviceWatcher = new QDBusServiceWatcher();
serviceWatcher->setConnection(QDBusConnection::sessionBus());
serviceWatcher->addWatchedService("my.service.MyService");
Run Code Online (Sandbox Code Playgroud)
.....
myServiceProxy = new local::MyService("my.service.MyService",
"/my/service/MyService", QDBusConnection::sessionBus(), this);
Run Code Online (Sandbox Code Playgroud)
我需要使用 IP 192.30.82.40 将 PC 上的客户端连接到 PC 192.30.82.101 上的服务。我不知道该怎么做。我在论坛上找到了一些主题,但我仍然不明白该怎么做。
所以,我发现了什么:
<listen>tcp:host=<host>,port=<port></listen>
<listen>unix:tmpdir=/tmp</listen>
<auth>ANONYMOUS</auth>
<allow_anonymous/>
在这里我有一个问题:我必须在这里使用哪个 IP 地址(服务器或客户端)?哪个端口用于 DBUS(它是默认端口还是我如何检查它)?我尝试设置客户端 PC、服务 PC 和不同端口以及端口 0 的 IP 地址,但出现错误:无法绑定套接字“172.30.82.40:0”:无法分配请求的地址。
export DBUS_SESSION_BUS_ADDRESS=tcp:host=<host>,port=<port>。我试图用不同的端口来做到这一点,用 …