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

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

4个回答

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

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

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

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

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 这代码基本不奏效,因为它靠遍历网段ip,并且每个ping一次的办法来判断,但是现在几乎所有的pc的防火墙都关掉了icmp。ping不通不等于这个ip不存在。
接近 5 年之前 回复

jframe要求跨平台吗?

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐