JDK1.6 获取操作系统IP地址及对应物理mac地址

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;


public class OSInfo {
public static void listIPMac() throws SocketException{
//首先获取到机器的所有网络接口
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
NetworkInterface ni = null;

//网卡的物理mac地址二进制格式
byte[] macbyte = null;

//网卡的物理mac地址
String mac = null;

//遍历所有的网络接口
while(nis.hasMoreElements()){
ni = nis.nextElement();

//当不是回环网卡,并且启动,并且不是虚拟网卡
if(!ni.isLoopback() && ni.isUp() && !ni.isVirtual()){
macbyte = ni.getHardwareAddress();
//把二进制格式化成十六进制
mac = bytesToHexString(macbyte, macbyte.length);
Enumeration<InetAddress> ias = ni.getInetAddresses();
InetAddress ia = null;
while(ias.hasMoreElements()){
ia = ias.nextElement();
//不是 127.0.0.1 回环IP
if(!ia.isLoopbackAddress()){
System.out.println(ia.getHostAddress()+" = " + mac.toUpperCase());
}
}
}
}
}

/*
 * 二进制转十六进制
 */
public static String bytesToHexString(byte[] src, int length) {
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();


}

public static void main(String[] args) {
try {
listIPMac();
} catch (SocketException e) {
e.printStackTrace();
}
}

}


运行结果:

2001:0:4137:9e76:3804:5134:2249:d190 = 00000000000000e0
fe80:0:0:0:3804:5134:2249:d190%11 = 00000000000000e0
fe80:0:0:0:b8c8:25a3:8cb6:a0b7%13 = 0015af5*****
192.168.1.101 = 0015af5*****

JDK1.6获取 CPU 使用率可以通过读取 /proc/stat 文件中的信息来计算。可以使用下面的代码实现: ```java import java.io.BufferedReader; import java.io.FileReader; public class CpuUsage { private static long lastTotal = 0; private static long lastIdle = 0; public static void main(String[] args) { while (true) { try { Thread.sleep(1000); double usage = getCpuUsage(); System.out.println("CPU Usage: " + usage); } catch (InterruptedException e) { e.printStackTrace(); } } } private static double getCpuUsage() { try { BufferedReader reader = new BufferedReader(new FileReader("/proc/stat")); String line = reader.readLine(); if (line == null) { return 0.0; } String[] fields = line.split("\\s+"); long total = 0; for (int i = 1; i < fields.length; i++) { total += Long.parseLong(fields[i]); } long idle = Long.parseLong(fields[4]); reader.close(); if (lastTotal == 0 || lastIdle == 0) { lastTotal = total; lastIdle = idle; return 0.0; } double usage = 1.0 - (double) (idle - lastIdle) / (total - lastTotal); lastTotal = total; lastIdle = idle; return usage; } catch (Exception e) { e.printStackTrace(); return 0.0; } } } ``` 在上面的代码中,`getCpuUsage()` 方法读取 /proc/stat 文件中的信息,并计算 CPU 使用率。`lastTotal` 和 `lastIdle` 变量用于记录上一次的 CPU 时间。该方法返回一个 double 类型的值,表示 CPU 使用率。可以通过调用该方法来获取 CPU 使用率。注意,在 Windows 系统上无法使用该方法。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值