ルーターのパブリック IP が 92.1.85.179
であるとします。サーバーを搭載したコンピューターのローカル IP は 192.168.0.2 です
。ルーターは 92.1.85.179:5678 を 192.168.0.2:5678 に転送するように設定されています。
私が持っているサーバーでは:
System.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
Registry registry = LocateRegistry.createRegistry( 5678 );
registry.rebind( "TheWebServer" , webServerInt );
クライアントには次のものがあります。
Registry registry = LocateRegistry.getRegistry( "92.1.85.179" , 5678 );
server = (WebServerInterface) registry.lookup( "TheWebServer" );
クライアントがサーバーに対してローカルなネットワーク上にある場合は問題ありません。クライアントがローカル ネットワークの外部にある場合、java.rmi.ConnectException: 接続がホストに拒否されました: 192.168.0.2; が発生します。
明らかに、サーバーがクライアントに 192.168.0.2 の IP を与えているのは、コードに表示されていないSystem.setProperty( "java.rmi.server.hostname" , "92.1.85.179" );
ためです。
任意の入力をいただければ幸いです。