gpt4 book ai didi

java - 连接客户端-服务器 RMI

转载 作者:行者123 更新时间:2023-12-01 13:54:39 25 4
gpt4 key购买 nike

如果服务器是远程的(与客户端不在同一台机器上),我对客户端实际上如何与服务器建立连接感到困惑。我的代码使用 localhost 工作正常,但我无法弄清楚客户端实际上如何连接到服务器主机,以便它查找 rmiregistry。我对服务器注册表中存储的内容感到困惑,是示例还是本地主机?这可能很愚蠢,但我尝试在客户端将 localhost 转换为其 ip 地址,并执行 String url = "//"+ server + ":"+ 1099 + "/Sample";其中服务器是来自 getbyname() 的 ip,但我得到一个异常: java.rmi.NotBoundException: 127.0.0.1:1099/Sample那是两台机器上的客户端和服务器。我只是想弄清楚两者如何远程连接,但它甚至无法使用本地主机的 IP 地址在同一台机器上工作。

客户:

 import java.net.InetAddress;
import java.rmi.Naming;
import java.rmi.RemoteException;

public class SampleClient {
public static void main(String args[]) {



String url = "//" + "localhost" + ":" + 1099 + "/Sample";

SampleInterface sample = (SampleInterface)Naming.lookup(url);



} catch(Exception e) {
System.out.println("SampleClient exception: " + e);
}
}
}

服务器:

  import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.server.UnicastRemoteObject;

public class SampleServer {
public static void main(String args[]) throws IOException {

// Create and install a security manager
if (System.getSecurityManager() == null)
System.setSecurityManager(new RMISecurityManager());
try {

String url = "//localhost:" + 1099 + "/Sample";
System.out.println("binding " + url);
Naming.rebind(url, new Sample());
// Naming.rebind("Sample", new Sample());
System.out.println("server " + url + " is running...");
}
catch (Exception e) {
System.out.println("Sample server failed:" + e.getMessage());
}
}
}

最佳答案

服务器应绑定(bind)到在“localhost”上运行的注册表。

客户端应该在服务器主机上查找注册表。

就这么简单。

I'm confused on what gets stored in the registry for the server, is it Sample or localhost?

都不是。您混淆了三件不同的事情:

  1. 主机名,在本例中为“localhost”。
  2. 绑定(bind)名称,在本例中为“Sample”。
  3. 绑定(bind)的对象,即远程 stub 。

关于java - 连接客户端-服务器 RMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19687983/

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