【发布时间】:2012-01-18 13:29:40
【问题描述】:
我有正常运行的 RMI 客户端-服务器系统。服务器的主机信息对客户端来说是已知的,因此他们可以查找并进行调用。在第一次调用服务器时,客户端将“自己”的远程引用传递给服务器,以便服务器可以进行回调。服务器维护所有已连接客户端的列表(当客户端关闭时,它会从服务器“取消注册”,并且有一个线程会定期检查客户端是否可访问并驱逐不可访问的客户端)。
服务器上有一个图形界面(webapp 的一部分),允许用户随时可视化连接的客户端。现在我被要求在此界面中显示客户端的 IP 地址。
我的问题:在 RMI 中,如果您有远程对象(存根)的远程引用,是否有一种简单的方法来确定该远程对象实际所在的主机(DNS 名称或 IP 地址)?
注意:我可以在客户端第一次连接并存储信息时使用RemoteServer.getClientHost,或者我可以在客户端上实现一个返回主机信息的远程方法,但我想知道是否有内置 RMI使用远程引用的方式。
【问题讨论】:
-
您的问题不清楚。 RemoteServer.getClientHost() 为您提供客户端的地址,而不是远程对象的地址。无论如何,远程对象的地址有什么用?在 RMI 中你无能为力。
-
是的,在这种情况下,我确实需要远程对象的地址。不适用于 RMI 调用或类似的操作,仅用于在 GUI 中显示...