做个jframe小程序,在加载时将局域网内所有IP和主机名用流布局显示在窗体上!
需要遍历局域网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();
}
}
jframe要求跨平台吗?
1.得到局域网网段,可由自己机器的IP来确定
2.根据IP类型,一次遍历局域网内IP地址