gpt4 book ai didi

java - RMI 服务器使用错误的 IP 地址

转载 作者:行者123 更新时间:2023-12-02 03:38:16 25 4
gpt4 key购买 nike

当我的网卡连接到网络 A 时,我正在启动 RMI 服务器。运行我的客户端按预期成功并打印“Hello World”。一旦我将网络连接更改为网络 B(无需重新启动 RMI 服务器!),我就无法再连接到该服务器。服务器和客户端始终运行在同一主机上,因此使用本地主机地址就足够了。

服务器:

public class HelloImpl extends UnicastRemoteObject implements Hello {

public HelloImpl() throws RemoteException {
}

public String sayHello() {
return "Hello world!";
}

public static void main(String args[]) throws RemoteException {
Registry registry = LocateRegistry.createRegistry(3128);
registry.rebind("HelloServer", new HelloImpl());
}
}

客户:

public class HelloClient {

public static void main(String arg[]) throws Exception{
Registry registry=LocateRegistry.getRegistry("localhost", 3128);;
Hello result = (Hello) registry.lookup("HelloServer");
System.out.println(result.sayHello());
}

}

异常(exception)是:

HelloClient exception: Connection refused to host: 192.168.169.136; nested exception is: 
java.net.ConnectException: Connection timed out: connect

指的是我在连接到网络 A 时分配的 IP 地址。注册表查找按预期工作,只有对 result.sayHello() 的调用失败并出现上述异常。

如何告诉 RMI 对所有内容使用 localhost(而不仅仅是注册表)?

最佳答案

在导出任何远程对象(包括注册表)之前,将服务器 JVM 上的系统属性 java.rmi,server.hostname 设置为 127.0.0.1。

关于java - RMI 服务器使用错误的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37163526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com