java RMI over the Internet主机拒绝连接



我们正试图让RMI通过互联网工作。我们尝试了什么:

  1. 客户端和服务器端的端口转发 (1099-1100)。
  2. 关闭Windows和路由器中的防火墙
  3. 尝试过与 tunngle (www.tunngle.net/)

我们的RMI接口:

import java.rmi.RemoteException;
public interface RMIInterface extends java.rmi.Remote    {
  public void helloWorld(int i) throws RemoteException;
}

我们的 RMI 服务器实现:

import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
public class RMIServerTest extends UnicastRemoteObject implements RMIInterface {
    public RMIServerTest() throws RemoteException {
    }
    @Override
    public void helloWorld(int i) throws RemoteException {
            for (int j = 0; j < i; j++) {
                    System.out.println("Hello World");
            }
    }
    public static void main(String[] args) {
            try {
                    LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
            }
            catch (RemoteException ex) {
                    System.out.println(ex.getMessage());
            }
            try {
                    Naming.rebind("Server", new RMIServerTest());
            } catch (MalformedURLException ex) {
                    System.out.println(ex.getMessage());
            } catch (RemoteException ex) {
                    System.out.println(ex.getMessage());
            }
    }
}

和我们的客户:

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

public class RMIClient {
  public static void main(String[] args) throws RemoteException, NotBoundException,MalformedURLException {
    try {
       RMIInterface serverObject = (RMIInterface) Naming.lookup("//externalServerAdress/Server");
        serverObject.helloWorld(10);
    }
    catch (Exception e) {
        System.out.println(e.getMessage());
    }

  }
}

我们仍然收到此错误:

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

192.168.0.13 是路由器后面的服务器的本地 IP 地址。我们使用路由器的外部IP在客户端上连接。像"2.246.133.155" = 外部服务器地址。所以我们有联系。我们通过服务器的外部IP地址(WAN IP)进行连接并显示错误,它获取服务器的本地IP地址,但仍然拒绝连接。

谢谢任何提示。

Connection refused to host: 192.168.0.13

那不是互联网地址。它是仅存在于路由器后面的专用地址。您需要使用您的公共 IP 地址,并通过路由器安排端口转发。

相关内容

  • 没有找到相关文章

最新更新