java RMI + 源命中服务器来自互联网或来自内网

标签 java sockets rmi

在 java RMI 中,我正在构建一个聊天应用程序。但我无法找到一种方法来确定访问我服务器的 IP 是来 self 的内部组织网络(INTRANET)还是来自外部世界(INTERNET)。 现在我正在使用

try {
        System.setProperty("java.rmi.server.hostname",InetAddress.getLocalHost().getHostAddress());
        Registry statusRegistry = LocateRegistry.createRegistry(ChatConstants.statusPort);
        ChatInterface chat = new ChatImpl(ChatConstants.statusPort) ;
        statusRegistry.rebind("statusconnection",chat);
        System.out.println("RMIStatusConnection Server is started...");
     } catch (RemoteException e) {
            System.out.println("RMIStatusConnection failed...");
            e.printStackTrace();
     } catch (UnknownHostException e) {
            e.printStackTrace();
     }

最佳答案

尝试RemoteServer.getClientHost(),但它可能只提供最近的NAT设备的地址。

注意,这样设置 java.rmi.server.hostname 没有多大意义。这是默认设置。仅当默认设置有问题时才需要进行设置。

关于java RMI + 源命中服务器来自互联网或来自内网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15804977/

相关文章:

java - 使用java的Sqoop失败

java - 在调用方法之前不执行任何操作的线程或类

java - 开发网络中计算机之间通信的应用程序

java - 使用java rmi激活系统的主要目的是什么?

java - 在 java 中使用 Ldap 获取组

java - 方法被调用早于定义

java - 使用 Hibernate 和 Spring 的 Swing 应用程序

c - 在这种情况下,我该如何使用char指针?(Windows中的SOCKET编程)

javascript - TCP套接字 Chrome

java - 客户端收到未声明的已检查异常,但已声明异常被捕获