我正在尝试使用 RMI 编写一个用于客户端/服务器通信的程序,这个主题对我来说是新的。我查看了大量示例,看看我是否可以尝试理解它,它们似乎都是使用本地主机设计的。我的程序不会在本地主机上运行,它将连接到完全不同的机器服务器。
如果有人能向我展示一个简单的例子,说明如何使用 RMI 在两台不同的机器之间建立连接,那就太棒了。我不需要看它是如何为 localhost 完成的,我已经看到了数百万个。
谢谢
假设我们正在连接两个系统,IP 地址为 192.168.1.2 的 A(服务器)和 IP 地址为 192.168.1.3 的 B(客户端)。您应该在服务器(即系统 A)上启动注册表,然后服务器程序应该像这样绑定对象
Naming.rebind("rmi://192.168.1.2/myObject",obj);
然后在具有查找功能的系统B上编译客户端程序
myInterface objHandle = (myInterface)Naming.lookup("rmi://192.168.1.2/myObject");
主要问题是两个系统必须在同一个网络上进行通信,您可能必须创建自己的网络。
您只需要更改客户端。
将其 Naming.lookup() 字符串从“localhost”更改为服务器的主机名或 IP 地址。bind() 或 rebind() 调用中的服务器命名字符串不会从“localhost”更改,因为服务器及其注册表始终位于同一主机上。
如果您使用 Registry 而不是 Naming,那么您只需更改客户端的 LocateRegistry.getRegistry() 调用。