qq18234834396
「已注销」
2015-08-26 08:13
采纳率: 100%
浏览 5.3k
已采纳

java如何获取局域网内所有IP

做个jframe小程序,在加载时将局域网内所有IP和主机名用流布局显示在窗体上!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • CSDNXIAOS
    Robot-S 2015-08-26 08:28
    已采纳

     需要遍历局域网IP的,大体分为两步:: 1.得到局域网网段,可由自己机器的IP来确定 2.根据IP类型,一次遍历局域网内IP地址 我给你一个JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可 代码如下:package bean;

    import java.io.*;
    import java.util.*;

    public cl......
    答案就在这里:java获取局域网IP
    ----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

    点赞 评论
  • oyljerry
    oyljerry 2015-08-26 08:23
     package com.jn.lan;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.InetAddress;
    import java.util.StringTokenizer;
    import java.util.Vector;
    
    import com.common.util.SystemHWUtil;
    import com.string.widget.util.ValueWidget;
    
    public class LANIP {
        public static InetAddress[] getAllOnline() {
            // TODO Auto-generated method stub
            Vector v = new Vector(50);
            try {
                // Process process1 =
                // Runtime.getRuntime().exec("ping -w 2 -n 1 192.168.1.%i");
                // process1.destroy();
                Process process = Runtime.getRuntime().exec("arp -a");
                InputStreamReader inputStr = new InputStreamReader(
                        process.getInputStream(), "GBK");
                BufferedReader br = new BufferedReader(inputStr);
                String temp = "";
                br.readLine();
                br.readLine();
                br.readLine();// 此后开始读取IP地址,之前为描述信息,忽略。
                while ((temp = br.readLine()) != null) {
                    System.out.println(temp);
                    if (!ValueWidget.isNullOrEmpty(temp)) {
                        StringTokenizer tokens = new StringTokenizer(temp);
                        String x;
                        InetAddress add=null;
                        try {
                            add = InetAddress.getByName(x = tokens
                                    .nextToken());
                        } catch (java.net.UnknownHostException e) {
                            continue;
                        }
                        // System.out.println(x);
                        v.add(add);
                        // System.out.println(add);
                    }
                }
                System.out.println(SystemHWUtil.DIVIDING_LINE);
                v.add(InetAddress.getLocalHost());
                process.destroy();
                br.close();
                inputStr.close();
            } catch (Exception e) {
                System.out.println("可能是网络不可用。");
                e.printStackTrace();
            }
            int cap = v.size();
            InetAddress[] addrs = new InetAddress[cap];
            for (int i = 0; i < cap; i++) {
                addrs[i] = (InetAddress) v.elementAt(i);
                 System.out.println(addrs[i]);
            }
            return addrs;
    
        }
    
        public static void main(String args[]) {
            InetAddress[] i = new LANIP().getAllOnline();
        }
    }
    
    
    点赞 评论
  • qq181625136
    屁屁Joey 2015-08-26 10:56

    jframe要求跨平台吗?

    点赞 评论
  • yuke198907
    yuke198907 2015-08-27 04:52

    1.得到局域网网段,可由自己机器的IP来确定
    2.根据IP类型,一次遍历局域网内IP地址

    点赞 评论

相关推荐