Java中PING IP+端口號!

工作中遇到需要PING不同服務器的IP+端口號,對於菜鳥級別的人來說,比如我,一開始肯定是從性能方面考慮,爲了不影響系統性能,只開闢一個socket從庫中取出一組IP+端口的集合,循環去ping,簡單來說就是在循環外去開啓、關閉。代碼如下

//開啓socket
Socket s = new Socket();
for (int i = 0; i < list.size(); i++) {
		host = list.get(i).get("APPLICATION_IP");
		port = Integer.valueOf(list.get(i).get("APPLICATION_PORT"));
			SocketAddress add = new InetSocketAddress(host, port);
			try {
				s.connect(add, 3000);// 超時3秒
			} catch (IOException e) {
				//連接超時需要處理的業務邏輯
			}
}
//關閉socket略

結果出現PING其中一個IP+端口異常,之後所有的IP+端口號都會ping異常。因此一個socket連接只監聽一個IP+端口號最好。因此修改代碼爲如下所示:

for (int i = 0; i < list.size(); i++) {
		Socket s = new Socket();
		host = list.get(i).get("APPLICATION_IP");//從數據庫中獲取的IP
		port = Integer.valueOf(list.get(i).get("APPLICATION_PORT"));//端口
			SocketAddress add = new InetSocketAddress(host, port);
			try {
				s.connect(add, 3000);// 超時3秒
			} catch (IOException e) {
				//異常需要處理的業務邏輯
			} finally {
				try {
					s.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
}
其實修改後的代碼已經可以作爲一個小型的三級系統使用了,但是有時候IP+端口號不是幾個而是上百上千個,這樣的方式將不能夠再滿足系統的需要了!下篇文章將舉例說明多線程去PING  IP+端口號。

作爲初級程序員,很難將原理去剖析解釋出來!大多數只是爲工作需要,寫的不好的地方,希望大神多多指教!


發佈了19 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章