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