2012-04-26 94 views
1

我想,當一個例外在我的Android程序中出現,在我的套接字的異常塊打印的東西。爲什麼「78.137.18」不作爲無效的IP地址被拒絕?

但是,即使我舉一個無效的IP地址,我的異常不會被調用。

 try{ 
     SocketAddress socketAddress = new InetSocketAddress("78.137.18" , 8364); 
     } 
     catch (Exception e) 
     { 
     System.out.println("ERROR"); 
     } 

回答

3

這實際上是一個有效的IP地址。

[email protected]:~$ perl -nle 'use Socket; print inet_ntoa(inet_aton($_))' 
78.137.18 
78.137.0.18 

InetSocketAddress的構造也將接受主機名。

如果你想明確拒絕這些地址(但你確定嗎?),那麼你將不得不編寫代碼來檢查地址字符串,可能與正則表達式。

+0

我試圖連接到我敢肯定,一個IP地址了。儘管如此,這個例外還沒有被調用。你有好主意嗎 ? – madCode 2012-04-26 07:57:25

1

InetSocketAddress創建其表示套接字地址的對象。它確實將主機名解析爲IP地址,但它不連接也不綁定到指定的地址。這就是爲什麼你沒有得到例外。地址在語法上是正確的,並且連接嘗試永遠不會發生,所以沒有理由拋出異常。

+0

我試圖連接,但我沒有得到例外。但現在,我解決了它有一個timeoutException。 – madCode 2012-04-26 08:03:41