获取内网范围内所有IP
2011-09-10 22:43 Rollen Holt 阅读(2034) 评论(0) 编辑 收藏 举报界面如上:
package net; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; import java.util.Map; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class GainAllIp extends JFrame{ public GainAllIp(){ panel.setLayout(new FlowLayout()); panel.add(showButton); panel.add(closeButton); JScrollPane js = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); panel.add(js); add(panel); showButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ try{ gainAllIp(); }catch(UnknownHostException e1){ e1.printStackTrace(); } } }); closeButton.addActionListener(new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ System.exit(0); } }); setSize(300, 300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /** * 获取内网所有IP,并显示在文本域中 * * @throws UnknownHostException * */ public void gainAllIp() throws UnknownHostException{ InetAddress host = InetAddress.getLocalHost(); String hostAddress = host.getHostAddress(); int pos = hostAddress.lastIndexOf("."); String wd = hostAddress.substring(0, pos + 1); for(int i = 1; i <= 255; ++i){ String ip = wd + i; thread = new PingIpThread(ip); new Thread(thread).start(); } } /** * 内部线程类 用于Ping指定的Ip地址,并判断其是否为有效的内网Ip地址,如果是就添加在集合对象中 * */ class PingIpThread implements Runnable{ public PingIpThread(){ } public PingIpThread(String ip){ this.ip = ip; } private String ip; @Override public void run(){ try{ // 获取所ping的IP进程 Process pro = Runtime.getRuntime().exec( "ping " + ip + " -w 280 -n 1"); BufferedReader buf = new BufferedReader(new InputStreamReader( pro.getInputStream())); String line = buf.readLine(); while(line != null){ if(line != null && (!line.equals(""))){ if(line.substring(0, 2).equals("来自") || (line.length() > 10 && line.substring(0, 10) .equals("Reply from"))){ textArea.append(ip + "\n"); System.out.println(ip); } } line = buf.readLine(); } }catch(Exception e){ e.printStackTrace(); } } }// end inner class public static void main(String[] args){ new GainAllIp(); } JPanel panel = new JPanel(); JButton showButton = new JButton("显示所有内网IP"); JButton closeButton = new JButton("退出程序"); JTextArea textArea = new JTextArea(15, 20); Map<String, String> pingmap = new HashMap<String, String>(); PingIpThread thread = null; }
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================