Java RMI не работает в интернете

135
01 марта 2022, 10:40

Я только пробую работать с RMI. Запускаю клиент и сервер на разных компьютерах. Сначала запускал в одной локальной сети (по вифи) - все работало. Я решил попробовать запустить клиент и сервер в интернете (без общего вифи или провода), но мне выдало ошибку:

java.rmi.ConnectException: Connection refused to host: 176.59.32.170; nested exception is: java.net.ConnectException: Connection timed out: connect

Вот файлы, которые я использую:

  • AddServerIntf.java
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface AddServerIntf extends Remote {
    double add(double d1, double d2) throws RemoteException;
}
  • AddServerImpl.java
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf{
    public AddServerImpl() throws RemoteException{
    }
    @Override
    public double add(double d1, double d2) throws RemoteException {
        return d1+d2;
    }
}
  • AddServer.java
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class AddServer {
    public static void main(String[] args){
        try{
            System.setProperty("java.rmi.server.hostname", "176.59.32.170");
            AddServerImpl obj = new AddServerImpl();
            LocateRegistry.createRegistry(1099);
            Naming.rebind("AddServer", obj);
        }catch (Exception e){
            System.out.println("Исключение: "+e);
        }
    }
}
  • AddClient.java
import java.rmi.Naming;
import java.util.*;
public class AddClient {
    static String kek = "176.59.32.170";
    public static void main(String[] args){
        try{
            String addServerURL = "rmi://"+kek+"/AddServer";
            AddServerIntf addServerIntf = (AddServerIntf) Naming.lookup(addServerURL);
            double d1 = 3, d2 = 5;
            System.out.println("Первое число: "+d1+"\nВторое число: "+d2+"\nСумма: "+addServerIntf.add(d1, d2));
        }catch(Exception e){
            System.out.println("Исключение: "+e);
        }
    }
}

На клиенте находятся следующие файлы: AddClient.java и AddServerIntf.java, а на сервере AddServer.java, AddServerImpl.java и AddServerIntf.java. На клиенте, очевидно, запускаю AddClient.java, на сервере -- AddServer.java.

IP-адрес динамический (с мобильного интернета). В качестве IP для соединения использую именно его. При работе в локальной сети использовал адрес компьютера, который 192.168... . Как сделать так, чтобы код работал посредством сети Интернет, исправить данную ошибку?

READ ALSO
Построение DSM матрицы для Jar-файлов

Построение DSM матрицы для Jar-файлов

Мне нужно построить матрицу DSM-матрицу для Jar файлов (DSMForJars)

189
Поделиться содержимым WebView в pdf

Поделиться содержимым WebView в pdf

У меня есть WebView, содержание которого я формирую из локального txt, даю ему необходимые настройкиВ принципе, по вот этой инструкции я формирую...

91
Заголовок spinner

Заголовок spinner

Такой вопрос: как сделать что бы заголовок spinner отличался от выбранного значения, те

88
Написание своего ColorPicker

Написание своего ColorPicker

Всем приветПишу приложение на android для управления LED-лампой и для этого возникла задача сделать Color Picker который будет регулировать теплый...

110