java唯一标识_java怎么获取电脑的唯一标识?

首先,这是一个更加接近于计算机硬件的东西,因此应该考虑使用JNI技术,底层采用C语言或C++实现,C++读取计算机硬件信息,然后返回java进行处理,至于防止重复,这个你就要自己想办法了,因为毕竟计算机是多个硬件组合的,同一批次硬件标识有所相似也没有办法避免,只能通过一些算法避免重复。

JNI技术是这样:首先编写一个类,此类含有native方法,即:

private/protected/public 返回类型 方法名 (参数表);

然后找到这个类的class文件,在Eclipse的工作空间对应的bin目录可以看到。

在地址栏输入cmd,打开命令提示符,输入javah 类名然后回车,可以发现生成了一个头文件。下面创建一个C语言/C++项目,复制刚刚的头文件进去,配置此项目使之包含%java_home%/include目录以及%java_home%/win32目录,新建一个cpp文件,实现头文件中的各个方法。

例如:

public class NativeHardware {

public native String getHostName();

public native int getCPUVersion();

public native int getCPULevel();

public native int getCpuCount();

public native String[] getNetWorkAddr();

}

import java.io.File;

import java.net.MalformedURLException;

public class MainStart {

public static void main(String[] args) throws MalformedURLException {

System.load(new File("lib/JNINative.dll").getAbsolutePath());

NativeHardware hard = new NativeHardware();

System.out.println(hard.getCPULevel());

}

}

生成的头文件:

/* DO NOT EDIT THIS FILE - it is machine generated */

#include /* Header for class NativeHardware */

#ifndef _Included_NativeHardware#define _Included_NativeHardware#ifdef __cplusplusextern "C" {

#endif

JNIEXPORT jstring JNICALL Java_NativeHardware_getHostName

(JNIEnv *, jobject);

JNIEXPORT jint JNICALL Java_NativeHardware_getCPUVersion

(JNIEnv *, jobject);

JNIEXPORT jint JNICALL Java_NativeHardware_getCPULevel

(JNIEnv *, jobject)

JNIEXPORT jint JNICALL Java_NativeHardware_getCpuCount

(JNIEnv *, jobject);

JNIEXPORT jobjectArray JNICALL Java_NativeHardware_getNetWorkAddr

(JNIEnv *, jobject);

#ifdef __cplusplus}

#endif#endif

cpp文件实现头文件的方法

#include #include#include "NativeHardware.h" using namespace std;

JNIEXPORT jint JNICALL Java_NativeHardware_getCPUVersion

(JNIEnv *, jobject){

SYSTEM_INFO sysInfo;

GetSystemInfo(&sysInfo);

return (long)sysInfo.wProcessorRevision;

}

JNIEXPORT jint JNICALL Java_NativeHardware_getCPULevel

(JNIEnv *, jobject){

SYSTEM_INFO sysInfo;

GetSystemInfo(&sysInfo);

return (long)sysInfo.wProcessorLevel;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值