今天在学习Hibernate的时候,查看Hibernate的文档中关于UUID的描述时,有这么一句话:
“UUID包含:IP地址,JVM的启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。 在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下的能做的最好实现了。” 1.为什么Java不能获得MAC地址或者内存地址?经常看到网上一些关于java获取MAC地址的文章,他们好像用的是Runtime类
2.另外,在开发中哪些地方能用到JNI?? 谢高手指点~~~
“UUID包含:IP地址,JVM的启动时间(精确到1/4秒),系统时间和一个计数器值(在JVM中唯一)。 在Java代码中不可能获得MAC地址或者内存地址,所以这已经是我们在不使用JNI的前提下的能做的最好实现了。” 1.为什么Java不能获得MAC地址或者内存地址?经常看到网上一些关于java获取MAC地址的文章,他们好像用的是Runtime类
2.另外,在开发中哪些地方能用到JNI?? 谢高手指点~~~
import java.io.IOException;
import java.io.InputStreamReader;public class GetMACAddress { public static String getMACAddress() { String address = "";
String os = System.getProperty("os.name");
if (os != null && os.startsWith("Windows")) {
try {
String command = "cmd.exe /c ipconfig/all";
Process p = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
if (line.indexOf("Physical Address") > 0) {
int index = line.indexOf(":");
index += 2;
address = line.substring(index);
break;
}
}
br.close();
return address.trim();
} catch (IOException e) {
}
}
return address;
} public static void main(String[] args) {
System.out.println(getMACAddress());
}
}希望对你有帮助。
呵呵!這個方法知道!但是这样读出来的MAC等信息并不是Java代码直接获取的,而是调用了系统的命令,Java代码应该是不能直接访问机器硬件设备的吧!
2、需要调用c++或其它语言编写的dll时需要用到jni(一般使用JNI时都是用JNI获取客户端机器的一些标识用来做校验【是否合法用户或其它】的),但是用了JNI后平台上的移植性不方便【例如在windows下编写的dll文件在Linux上就用不了等等】。
3、NetworkInterface类可以访问到本机所有网卡的信息,自己查查API文档吧。
4、IE6上可以用JS去获取客户端机器的信息 LZ可以到google上搜“js获取MAC” 就会有很多相关介绍信息。