我已经开发了一个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);}
}
}
请告知我如何添加将服务器传递给客户信息的功能
答案 0 :(得分:1)
服务器应捕获客户端详细信息,即客户端详细信息,如IP
在通过RemoteServer.getClientHost()
进行远程方法调用期间,客户端的IP地址可用。如果您需要其他详细信息,您只需告诉我们它们是什么。
请告知我如何添加监听器,以便客户端发送请求时,服务器应捕获详细信息
就客户的IP地址而言,您不需要听众。对于你正在尝试做的任何事情,你可能不需要听众:见下文。
这和你的prior question强烈反映了XY问题。你到底想要完成什么?这听起来像Remote Session Pattern的情况,但在你进一步信任之前,我们无法确定。
答案 1 :(得分:0)
如果要将除客户端IP地址之外的其他信息传递给服务器,可以在远程接口中展开sum方法,并将该信息作为附加参数传递。
RMI服务器不需要来自客户端的IP信息,因为RMI远程服务器端的RemoteServer.getClientHost()
返回进行远程呼叫的客户端的IP。