Исключение 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. проблема была основной сетевой проблемой, но это могло случиться с кем-то еще.