java判斷本網段有多少可以ping通的ip

使用ArrayList生成本網段所有IP的集合。然後使用增強for循環一個個進行判斷是否可以ping通,但存在一個問題是這樣遍歷ip的方式太慢了,應該考慮使用多線程實現。下一篇文章嘗試使用多線程進行ping查詢。

以下整體實現:

package socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class TestIp {
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		List<String> slist = new ArrayList<String>(){};
		for(int i = 0; i<255; i++) {
			String s = "192.168.1."+i;
			slist.add(s);
		}
		StringBuilder sb = new StringBuilder();
		for(String s: slist) {
			Process p = Runtime.getRuntime().exec("ping "+s);
			//ping後面一定要有空格
			BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
			String line = null;
			//InputStreamReader,轉換流 java.io.InputStreamReader ,是Reader的子類,是從字節流到字符流的橋樑。
			//getInputStream()返回進程對象的輸入流
			while((line=br.readLine())!=null) {
				if(line.length() != 0 && line.contains("TTL")) {
				//包含"TTL"字樣說明本次ping成功了
					sb.append(line+"\n");
					System.out.println(sb.toString());
				}
			}
		}
		
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章