通过rmi侦听器将客户端信息传递给RMI中的服务器

时间:2015-08-23 15:07:30

标签: java rmi

我已经开发了一个java rmi程序,如下所示,我想要添加的唯一内容是,当客户端将请求发送到服务器时,服务器应该捕获客户端详细信息,如ip,请告知我如何添加监听器,以便客户端发送请求时,服务器应捕获详细信息..

下面是我的程序..

界面: -

import java.rmi.*;
public interface AddServerInterface extends Remote {
    public int sum(int a,int b);
}

实施班级: -

import java.rmi.*;
import java.rmi.server.*;
public class Adder extends UnicastRemoteObject implements AddServerInterface {
    Adder()throws RemoteException{
        super();
    }

    public int sum(int a, int b) {
        return a+b; 
    }
}

RMI服务: -

import java.rmi.*;
import java.rmi.registry.*;
public class AddServer {

    public static void main(String args[]) {
        try{
            AddServerInterface addService=new Adder();
            Naming.rebind("AddService",addService); 
            //addService object is hosted with name AddService. 

        } catch(Exception e){System.out.println(e);}
    }
}

客户端应用程序: -

import java.rmi.*;
public class Client {
    public static void main(String args[]) {
        try{
            AddServerInterface st=(AddServerInterface)Naming.lookup("rmi://"+args[0]+"/AddService");
            System.out.println(st.sum(25,8));
        } catch(Exception e){System.out.println(e);}
    }
}

请告知我如何添加将服务器传递给客户信息的功能

2 个答案:

答案 0 :(得分:1)

  

服务器应捕获客户端详细信息,即客户端详细信息,如IP

在通过RemoteServer.getClientHost()进行远程方法调用期间,客户端的IP地址可用。如果您需要其他详细信息,您只需告诉我们它们是什么。

  

请告知我如何添加监听器,以便客户端发送请求时,服务器应捕获详细信息

就客户的IP地址而言,您不需要听众。对于你正在尝试做的任何事情,你可能不需要听众:见下文。

这和你的prior question强烈反映了XY问题。你到底想要完成什么?这听起来像Remote Session Pattern的情况,但在你进一步信任之前,我们无法确定。

答案 1 :(得分:0)

如果要将除客户端IP地址之外的其他信息传递给服务器,可以在远程接口中展开sum方法,并将该信息作为附加参数传递。

RMI服务器不需要来自客户端的IP信息,因为RMI远程服务器端的RemoteServer.getClientHost()返回进行远程呼叫的客户端的IP。