我正在尝试在一台服务器和两台客户端之间建立双向通信。当所有程序在同一台机器上运行但是当我尝试使用LAN网络时它不起作用时,这种方法非常有效。 我收到了错误:
java.rmi.ConnectException: Connection refused to host: 192.168.1.24; nested exception is:
java.net.ConnectException: Connection timed out: connect
这是服务器代码:
public class Server{
private Game partie; // The class Game extends UnicastRemoteObject and implements ServerInterface
public Server() throws RemoteException {
System.setProperty("java.rmi.server.hostname", "192.168.1.24");
partie = new Game();
LocateRegistry.createRegistry(1099);
try{
Naming.rebind("Server", partie);
}
catch(Exception e){
e.printStackTrace();
}
}
public static void main(String argv[]) throws RemoteException{
new Server();
}
}
以下是客户端代码的构造函数:
public Client(String aName, String aServerAdress) throws RemoteException {
super();
name = aName;
ServerAdress = aServerAdress; // = "192.168.1.24"
theRegistry = LocateRegistry.getRegistry(ServerAdress);
try {
serverInterface = (ServerInterface) theRegistry.lookup("Server");
} catch (NotBoundException e1) {
e1.printStackTrace();
}
try {
theRegistry.bind(name, this); // For two-way communication
} catch (AlreadyBoundException e) {
e.printStackTrace();
}
serverInterface.registerClient(name);
}
其中registerClient(String name)代码大约是(在Game类中):
cd_client = (ClientInterface) Naming.lookup("rmi://127.0.0.1/" + name);
所有防火墙都被禁用。
我一直在研究这个问题好几个小时,但我还是没有发现什么问题。如果你能帮我一点,我真的很感激。 谢谢
答案 0 :(得分:4)
将所有出现的127.0.0.1(注册表绑定除外)更改为您的LAN IP地址(在您的情况下为192.168.1.24)
127.0.0.1是Loopback地址:
“环回(环回)描述了路由电子信号的方式, 数字数据流或来自其原始的项目流 设施无意地返回到源的接收端 处理或修改。这主要是一种测试方法 输电或运输基础设施。“ - 来自维基百科