這篇文章主要介紹了java如何檢查服務(wù)器連通,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,包括做網(wǎng)站、網(wǎng)站建設(shè)、SEO優(yōu)化、網(wǎng)絡(luò)推廣、整站優(yōu)化營銷策劃推廣、電子商務(wù)、移動互聯(lián)網(wǎng)營銷等。創(chuàng)新互聯(lián)為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制及解決方案,創(chuàng)新互聯(lián)核心團(tuán)隊10多年專注互聯(lián)網(wǎng)開發(fā),積累了豐富的網(wǎng)站經(jīng)驗,為廣大企業(yè)客戶提供一站式企業(yè)網(wǎng)站建設(shè)服務(wù),在網(wǎng)站建設(shè)行業(yè)內(nèi)樹立了良好口碑。首先要了解一下ping的內(nèi)容。
概述
PING (Packet Internet Groper),因特網(wǎng)包探索器,用于測試網(wǎng)絡(luò)連接量的程序。Ping發(fā)送一個ICMP(Internet Control Messages Protocol)即因特網(wǎng)信報控制協(xié)議;回聲請求消息給目的地并報告是否收到所希望的ICMPecho (ICMP回聲應(yīng)答)。它是用來檢查網(wǎng)絡(luò)是否通暢或者網(wǎng)絡(luò)連接速度的命令。作為一個生活在網(wǎng)絡(luò)上的管理員或者黑客來說,ping命令是第一個必須掌握的DOS命令,它所利用的原理是這樣的:利用網(wǎng)絡(luò)上機(jī)器IP地址的唯一性,給目標(biāo)IP地址發(fā)送一個數(shù)據(jù)包,再要求對方返回一個同樣大小的數(shù)據(jù)包來確定兩臺網(wǎng)絡(luò)機(jī)器是否連接相通,時延是多少。
ping指的是端對端連通,通常用來作為可用性的檢查, 但是某些病毒木馬會強(qiáng)行大量遠(yuǎn)程執(zhí)行ping命令搶占你的網(wǎng)絡(luò)資源,導(dǎo)致系統(tǒng)變慢,網(wǎng)速變慢。嚴(yán)禁ping入侵作為大多數(shù)防火墻的一個基本功能提供給用戶進(jìn)行選擇。通常的情況下你如果不用作服務(wù)器或者進(jìn)行網(wǎng)絡(luò)測試,可以放心的選中它,保護(hù)你的電腦。
通常檢查服務(wù)器連通 使用ping命令,java代碼實現(xiàn)如下:
方法一:
JAVA里的PING是在JDK 1.5后用了新的函數(shù)isreachable()函數(shù)去實現(xiàn),但是結(jié)果通常返回false
原因:此方法用于測試是否可以達(dá)到該地址。實現(xiàn)盡大努力試圖到達(dá)主機(jī),但防火墻和服務(wù)器配置可能阻塞請求,使其在某些特定的端口可以訪問時處于不可到達(dá)狀態(tài)。如果可以獲得權(quán)限,則典型實現(xiàn)將使用 ICMP ECHO REQUEST;否則它將試圖在目標(biāo)主機(jī)的端口 7 (Echo) 上建立 TCP 連接。
public static boolean isOnline(String hostname) { try { InetAddress ia; boolean isonline = false; ia = InetAddress.getByName(hostname);// 例如:www.baidu.com isonline = ia.isReachable(1500); //超時時間1.5秒 return isonline; } catch (UnknownHostException e) { // TODO Auto-generated catch block System.out.println("address:" + hostname + " is not unknown"); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("address:" + hostname + " is not reachable"); } return false; }
方法二(推薦):
使用socket 對端口做TELNET操作, 結(jié)果比較準(zhǔn)確
public static boolean isOnline(String hostname, int port) { Socket server = null; try { server = new Socket(); InetSocketAddress address = new InetSocketAddress(hostname, port);//例如 www.baidu.com 80 server.connect(address, 3000); System.out.println("ok!"); return true; } catch (UnknownHostException e) { System.out.println("wrong!"); e.printStackTrace(); } catch (IOException e) { System.out.println("wrong"); e.printStackTrace(); } return false; }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“java如何檢查服務(wù)器連通”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!