我有一个RMI服务器和一个RMI客户端。如果客户端正在运行我创建的RMI版本,并且已经准备好接收连接,那么即使客户机没有连接到我,服务器端如何获得客户机的IP/主机名?
我正在考虑创建一个远程方法,该方法将调用客户机将他们的IP/Hostname发送到我的服务器端,但这需要我知道要连接到的客户机IP/Hostname,以便调用该方法。
这个程序的目的是建立一个监测程序,以监测学生在他们的实验室做什么,作为一名教师。
发布于 2012-07-13 10:15:34
即使客户机没有连接到我,服务器端的我如何获得客户机的IP/主机名?
这在术语上是矛盾的。如果没有连接,就没有当前客户端。如果要在远程方法调用期间使用当前客户端,请参阅RemoteServer.getClientHost()
。如果您想要的数据不是在远程方法调用期间,您可以在远程方法调用期间收集数据,但是您将很难决定何时删除客户端,除非客户端必须调用logout()
方法或其他类似的方法。如果这有帮助的话,可以在Unreferenced.unreferenced()
方法中完全清除集合。但是,您需要完全消除RMI中的“连接”概念。根本就没有这样的东西。连接在调用的持续时间内存在,并且在实现所需的额外范围内存在,但是在服务器或客户端中都无法获得它们,因此您可以设计它们,就像它们不存在一样,并且好像客户机除了在远程调用期间不存在一样。
或者使用我的远程会话模式,试试Google。
https://stackoverflow.com/questions/11467487
复制相似问题