在JSE中的InetAddress類中增加了一個isReachable方法可以使用這個方法來探測主機是否可以連通這個方法有兩個重載形式它們的定義如下
public boolean isReachable(int timeout) throws IOException
public boolean isReachable(NetworkInterface netif int ttl int timeout) throws IOException
第一個重載形式有一個timeout參數可以通過這個參數設置連接超時(單位毫秒)第二個重載形式多了兩個參數netif和ttl通過netif參數可以使用一個NetworkInterface對象來確定客戶端使用哪個網絡接口來測試主機的連通性ttl是指測試連通性過程中的最大連接躍點數(從客戶機到達遠程主機所經過的最大路由數就是最大連接躍點數一個路由被稱為一個躍點在Windows網絡連接中的高級TCP/IP設置對話框最下面可以設置接口躍點數)如果達到最大連接躍點數還沒找到遠程主機isReachable方法就認為客戶機和遠程主機之間是不可連通的
isReachable方法是通過連接主機的echo端口來確定客戶端和服務端是否可連通但在Internet上使用這個方法可能會因為放火牆等因素而無法連通遠程主機(實際上遠程主機是可以連通的)因此isReachable在Internet上並不可靠但我們可以將isReachable方法應用於局域網中
相關技術專題Java網絡編程基礎到進階教程
From:http://tw.wingwit.com/Article/program/Java/hx/201311/27058.html