我有一个非常简单的RMI服务器/客户端,可以在同一台机器上正常运行。我现在试图在一台机器上执行服务器而另一台机器上的客户端都在同一个网络上。我使用以下方法将属性设置为网络IP:
System.getProperty("java.rmi.server.hostname", "192.168.x.x");
&安培;两台计算机上都禁用了防火墙,但连接仍然失败。
客户端代码使用它来连接服务器(服务器在8888上使用createRegistry):
Registry registry = LocateRegistry.getRegistry("192.168.x.x",8888);
ITest stub = (ITest) registry.lookup("ITest");
然而,捕获的execption似乎显示的IP与给定的IP不一样,例如192.168.x.x vs 169.254.x.x:
Client exception: java.rmi.ConnectionException: Connection refused to host: 169.254.x.x; nested exception is ...
答案 0 :(得分:1)
正如dave_thompson_085所说,我打电话给System.setProperty
这是一个错字,我完全错过了。调用public class TestActivity extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TextView countdown = new TextView(this);
setContentView(countdown);
ViewModelProviders.of(this)
.get(TestViewModel.class)
.getCountdown()
.observe(this, countdown::setText);
}
}
可以解决此问题,现在可以正常运行。
答案 1 :(得分:0)
此异常可能有几个原因:
你还没有在后台开始你的rmiregistry
您正在尝试连接错误的端口号。
您的防火墙可能会阻止连接。
另外,请确保检查并禁用任何路由器防火墙限制(如果有)。