2010-11-21 62 views
0

假設路由器的公網IP是92.1.85.179
的電腦與服務器的本地IP 192.168.0.2是
路由器設置轉發92.1 .85.179:5678 192.168.0.2:5678麻煩連接到這是一個路由器後面的RMI服務器

在服務器,我有:

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;

顯然,服務器給客戶端的IP爲192.168.0.2,因爲它沒有出現在代碼中,我認爲System.setProperty("java.rmi.server.hostname" , "92.1.85.179");應該改變。

任何輸入將不勝感激。

回答

1

您還需要在端口5678上導出遠程對象,並且在導出任何遠程對象之前需要設置java.rmi.server.hostname。