java檢查服務(wù)器的連通兩種方法代碼分享
首先要了解一下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ò)上機器IP地址的唯一性,給目標(biāo)IP地址發(fā)送一個數(shù)據(jù)包,再要求對方返回一個同樣大小的數(shù)據(jù)包來確定兩臺網(wǎng)絡(luò)機器是否連接相通,時延是多少。
ping指的是端對端連通,通常用來作為可用性的檢查, 但是某些病毒木馬會強行大量遠(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á)主機,但防火墻和服務(wù)器配置可能阻塞請求,使其在某些特定的端口可以訪問時處于不可到達(dá)狀態(tài)。如果可以獲得權(quán)限,則典型實現(xiàn)將使用 ICMP ECHO REQUEST;否則它將試圖在目標(biāo)主機的端口 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; }
總結(jié)
以上就是本文關(guān)于java檢查服務(wù)器的連通兩種方法代碼分享的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:
Java編程利用socket多線程訪問服務(wù)器文件代碼示例
如有不足之處,歡迎留言指出。
相關(guān)文章
springmvc圖片上傳及json數(shù)據(jù)轉(zhuǎn)換過程詳解
這篇文章主要介紹了springmvc圖片上傳及json數(shù)據(jù)轉(zhuǎn)換過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10Spring?Boot?中的?Native?SQL基本概念及使用方法
在本文中,我們介紹了 Spring Boot 中的 Native SQL,以及如何使用 JdbcTemplate 和 NamedParameterJdbcTemplate 來執(zhí)行自定義的 SQL 查詢或更新語句,需要的朋友跟隨小編一起看看吧2023-07-07spring boot定時器實現(xiàn)定時同步數(shù)據(jù)的操作步驟
在Java中,@Scheduled注解是用于指定定時任務(wù)的執(zhí)行規(guī)則的,這篇文章給大家介紹spring boot定時器實現(xiàn)定時同步數(shù)據(jù)的操作步驟,感興趣的朋友一起看看吧2023-12-12java并發(fā)JUC工具包AtomicInteger原子整型語法基礎(chǔ)
這篇文章主要為大家介紹了java并發(fā)JUC工具包AtomicInteger原子整型語法基礎(chǔ),有需要的朋友可以借鑒參考希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03Java編程實現(xiàn)獲取當(dāng)前代碼行行號的方法示例
這篇文章主要介紹了Java編程實現(xiàn)獲取當(dāng)前代碼行行號的方法,結(jié)合實例形式分析了java基于StackTraceElement對象實現(xiàn)獲取代碼行號的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08Maven?Pom?文件中的隱式依賴導(dǎo)致Jar沖突問題
這篇文章主要介紹了Maven?Pom?文件中的隱式依賴導(dǎo)致Jar沖突問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12java8之LocalDate的使用、LocalDate格式化問題
這篇文章主要介紹了java8之LocalDate的使用、LocalDate格式化問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04