2009-09-07 54 views
0

我無法通過Java代碼連接到遠程已知服務器;連接時的異常是java.net.NoRouteToHostException:沒有路由到主機。服務器java的UnknownHostException

但奇怪的是,我能夠通過ssh連接到同一臺服務器。

詳情: 簡單的Java客戶端時,試圖建立與Java獨立服務器的連接,而conneting異常出現在下面的語句:

Socket socket = new Socket(ServerIP ServerPort); 

所需的端口是在服務器開放,使外部請求可以進來了。

再下面是返回false

InetAddress.getByName(SERVER_IP).isReachable(1000) 

服務器運行於Fedora,Java 5上。

供參考:Java cannot resolve DNS address from AIX: UnknownHostException與我的問題幾乎相同,但不知何故,這與AIX不相關;而且我覺得這個問題更多的是網絡或防火牆問題。

請指導我。

回答

0

我建議測試的東西來縮小問題範圍:

  1. 您可以遠程登錄到主機/端口?
  2. Java可以成功連接到任何其他主機/端口嗎?
  3. 您是否在使用主機名或IP地址 - 嘗試使用哪一個您沒有使用的主機名。
  4. 計算機是否運行防火牆?
+0

1否我無法telnet主機IP /端口。 2是的我可以通過局域網連接到其他IP。唯一的遠程服務器正在嘗試。 3我正在使用IP地址。 4是兩臺機器都使用防火牆,但服務器防火牆,但已允許監聽特定的端口,客戶機防火牆我想這應該不成問題,因爲它創建傳出連接。 netstat -pan | grep 5014 tcp 0 0 ::: 5014 ::: * LISTEN 6212/java – nilesh 2009-09-07 14:37:36

+0

如果您不能telnet到主機/端口,那麼網絡設置的某處會出現根本性的問題。 – SteveD 2009-09-07 20:59:21

+0

最近我檢查了一下,我可以遠程登錄某些端口(運行mysql-cluster的端口);但沒有任何其他如前面提到的5014。我甚至試圖使用其他一些端口,但沒有用。 – nilesh 2009-09-08 06:07:15

0

此外,您還應該檢查您的.ssh/config文件,也許有不同的Hostname定義爲您在命令行上使用的名稱。

+0

在我的知識中沒有這樣的文件,我也嘗試過通過其他機器連接,它連接好。 – nilesh 2009-09-07 14:39:23

0

那麼/ etc/hosts呢?也許它以某種方式干涉了?只是一個猜測。