我有一个RMI服务器和RMI客户端。如果客户端正在运行我所制作的RMI版本并准备好接收连接,那么即使客户端没有连接到我,服务器端如何获取客户端的IP /主机名?
我正在考虑创建一个远程方法,它将调用客户端将其IP /主机名发送到我的服务器端,但这需要我知道要连接的客户端IP /主机名以便调用该方法。 / p>
该计划的目的是创建一个监控程序,以监控学生在实验室中做什么,作为教师。
答案 0 :(得分:1)
即使客户端没有连接到我,服务器端如何获取客户端的IP /主机名?
这是一个矛盾。如果没有连接,则没有当前客户端。如果在远程方法调用期间需要当前客户端,请参阅RemoteServer.getClientHost()
。如果您想要远程方法调用期间的数据,则可以在远程方法调用期间收集它,但是您将很难决定何时删除客户端,除非客户端有义务调用logout()
方法或一些这样的。如果有帮助,您可以使用Unreferenced.unreferenced()
方法完全清除集合。但是你需要摆脱“连接”的概念。完全在RMI中。基本上没有这样的事情。在调用期间存在连接,并且对于实现所需的任何额外程度,但是无法在服务器或客户端中获取它们,因此您可以设计好像它们不存在一样,并且好像客户端在远程呼叫期间不存在。
或使用我的远程会话模式,试试Google。