Java RMI示例不适用于localhost

时间:2012-10-19 15:16:44

标签: java rmi

我正在尝试使用RMI编写一个用于客户端/服务器通信的程序,这个主题对我来说是新的。我看了很多例子,看看我是否可以尝试理解它们,它们似乎都是使用本地主机设计的。我的程序不会在localhost上运行,它将连接到服务器,这是一台完全不同的机器。

如果有人能告诉我一个如何使用RMI在两台不同机器之间建立连接的简单示例,那将是非常棒的。我不需要看看它是如何为localhost完成的,我已经看到了其中的数百万。

由于

2 个答案:

答案 0 :(得分:0)

您只需要更改客户端。

从" localhost"更改其Naming.lookup()字符串;到服务器的主机名或IP地址。 bind()或rebind()调用中服务器的命名字符串不会从" localhost"更改,因为服务器及其注册表始终位于同一主机上。

如果您使用的是Registry而不是Naming,那么您只需要更改客户端的LocateRegistry.getRegistry()调用。

答案 1 :(得分:0)

让我们假设我们正在连接两个系统,A(服务器),IP地址为192.168.1.2,B(客户端),IP地址为192.168.1.3。 您应该在服务器上启动注册表,即系统A,然后服务器程序应绑定对象,如

Naming.rebind("rmi://192.168.1.2/myObject",obj);

然后在系统B上编译具有查找功能

的客户端程序
myInterface objHandle = (myInterface)Naming.lookup("rmi://192.168.1.2/myObject");

主要问题是两个系统必须在同一网络上进行通信,您可能需要创建自己的网络。