Исключение Java RMI Connect: соединение отказано в Хосте / таймауте
Я работаю над игрой командной строки RMI, но всякий раз, когда я пытаюсь выполнить свою службу, я получаю такую ошибку:
java.rmi.ConnectException: Connection refused to host: 192.168.56.1; nested exception is:
java.net.ConnectException: Connection timed out: connect
Это основной класс для моего Server
:
public class RMIWar {
public static void main(String[] args) throws RemoteException, MalformedURLException {
try {
Controle obj = new Controle(4);
Registry reg = LocateRegistry.createRegistry(1099);
System.out.println("Server is ready");
reg.rebind("CtrlServ", obj);
}
catch (Exception e) {
System.out.println("Error: " + e.toString());
}
}
}
основной для моего Client
класс:
public class RMIWarClient {
public static void main(String[] args) throws RemoteException, MalformedURLException, NotBoundException {
try {
Registry registry = LocateRegistry.getRegistry("localhost");
ControleInt ctrl = (ControleInt) registry.lookup("CtrlServ");
System.out.println("CtrlServ found...n");
BioRMI bio = new BioRMI(null, 5,5,5);
ctrl.thRegister("Test", bio.atk, bio.def, bio.agi);
}
catch (Exception e) {
System.out.println("Error: " + e);
}
}
}
какие предложения?
4 ответов
будьте осторожны с портами, потому что они могут быть заблокированы для брандмауэра, например, если вы работаете в безопасной области, как вы работаете или в университете, администратор мог бы реализовать некоторые защиты...
Я не понимаю, как вы можете получить это исключение из этого кода. Согласно коду, ваш сервер и клиент работают на одном хосте, и вы не получаете тайм-ауты соединения на одном хосте.
Итак, предполагая, что это не ваш реальный код, и вы ищете правильный реестр (аргумент хоста getRegistry()
), Я бы спросил, является ли 192.168.56.1 IP-адресом, который вы ожидаете увидеть, учитывая вашу топологию сети. Это внутренний адрес LAN, и если ваш клиент вне локальной сети он должен пытаться подключиться к более общедоступному IP-адресу. Если адрес не тот, что вы ожидаете, я отсылаю вас к пункт A. 1 на RMI FAQ.
Я описал свое решение здесь java.РМО.ConnectException: соединение отказано в Хосте: 127.0.1.1; и здесь не удается подключиться к серверу MBeanServer Tomcat через jconsole в Java6. проблема была основной сетевой проблемой, но это могло случиться с кем-то еще.