使用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());
}
}
}
}
}