【问题标题】:How to implement Java RMI to get non-connected client ip/hostnames如何实现 Java RMI 以获取未连接的客户端 ip/主机名
【发布时间】:2012-07-13 09:12:54
【问题描述】:

我有一个 RMI 服务器和一个 RMI 客户端。如果客户端正在运行我创建的 RMI 版本并准备接收连接,即使客户端未连接到我,我如何在服务器端获取客户端的 IP/主机名?

我正在考虑创建一个远程方法,该方法将调用客户端将其 IP/主机名发送到我的服务器端,但这需要我知道要连接的客户端 IP/主机名才能调用该方法。

该计划的目的是创建一个监控计划,以监控学生作为教师在实验室中所做的事情。

【问题讨论】:

  • “监控学生”?您到底需要知道什么?

标签: java rmi


【解决方案1】:

即使客户端没有连接到我,我如何在服务器端获取客户端的 IP/主机名?

这在术语上是矛盾的。如果没有连接,则没有当前客户端。如果您在远程方法调用期间需要当前客户端,请参阅RemoteServer.getClientHost()。如果您想要在远程方法调用期间以外的数据,您可以在远程方法调用期间收集它,但是您将很难决定何时删除客户端,除非客户端必须调用logout() 方法或一些这样的。如果有帮助,您可以使用 Unreferenced.unreferenced() 方法完全清除集合。但是您需要完全摆脱 RMI 中的“连接”概念。基本上没有这样的事情。连接在调用期间存在,并且在实现所需的任何额外范围内都存在,但是无法在服务器或客户端中获取它们,因此您最好设计为好像它们不存在一样,并且尽管客户端在远程调用期间不存在。

或者使用我的远程会话模式,试试谷歌。

【讨论】:

  • 感谢您的解释澄清了我在 java RMI 中的一些误解。我现在正在考虑允许 RMI 服务器从一系列用户定义的 IP 进行远程调用。这样,如果我能够调用该方法,则意味着我可以调用未来的调用。这可行吗?
  • @kyrogue 我不明白这个问题;我不明白远程 IP 地址与监控学生在未“连接”时所做的事情有什么关系;在我看来,您将“客户端”和“服务器”重新设置为字体。接收连接的是服务器,而不是客户端。我认为你需要坐下来更清楚地重新定义你的问题。
猜你喜欢
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多