获取本机IP、MAC地址、CPUID
来源:互联网 发布:java 服务器 编辑:程序博客网 时间:2024/05/21 14:50
//需要连接Netapi32.lib
#include"winsock2.h"
#pragma comment(lib,"ws2_32.lib")
#include <Nb30.h>
//内网IP
int GetIPAddr(char *IpAddr)
{
WSAData wsaData;
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0)
{
return 1;
}
char host_name[225];
if (gethostname(host_name, sizeof(host_name)) == SOCKET_ERROR)
{
return 2;
}
struct hostent *phe = gethostbyname(host_name);
if (phe == 0)
{
return 3;
}
for (int i=0; phe->h_addr_list[i]!=0; ++i)
{
struct in_addr addr;
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
if (strlen(IpAddr) > 0)
strcat(IpAddr, "*_*");
strcat(IpAddr, inet_ntoa(addr));
}
WSACleanup();
return 0;
}
//网卡MAC
int GetMACAddr(char *MACAddr)
{
try
{
NCB ncb;
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, *PASTAT;
ASTAT Adapter;
typedef struct _LANA_ENUM
{
UCHAR length;
UCHAR lana[MAX_LANA];
}LANA_ENUM;
LANA_ENUM lana_enum;
UCHAR uRetCode;
memset(&ncb, 0, sizeof(ncb));
memset(&lana_enum, 0, sizeof(lana_enum));
ncb.ncb_command = NCBENUM;
ncb.ncb_buffer = (unsigned char *)&lana_enum;
ncb.ncb_length = sizeof(LANA_ENUM);
uRetCode = Netbios(&ncb);
if(uRetCode != NRC_GOODRET)
return 1;
for(int lana=0; lana<lana_enum.length; lana++)
{
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = lana_enum.lana[lana];
uRetCode = Netbios(&ncb);
if(uRetCode == NRC_GOODRET)
break;
}
if(uRetCode != NRC_GOODRET)
return 2;
memset(&ncb, 0, sizeof(ncb));
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = lana_enum.lana[0];
strcpy((char*)ncb.ncb_callname, "*");
ncb.ncb_buffer = (unsigned char *)&Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
if(uRetCode != NRC_GOODRET)
return 3;
sprintf(MACAddr, "%02X-%02X-%02X-%02X-%02X-%02X",
Adapter.adapt.adapter_address[0],
Adapter.adapt.adapter_address[1],
Adapter.adapt.adapter_address[2],
Adapter.adapt.adapter_address[3],
Adapter.adapt.adapter_address[4],
Adapter.adapt.adapter_address[5]);
return 0;
}
catch (...)
{
return -1;
}
}
//CPU ID
int GetCPUID(char *CpuId)
{
try
{
unsigned long s1,s2,s3,s4;
unsigned char vendor_id[]= "------------ ";
__asm
{
xor eax,eax
cpuid
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
__asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
__asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s3,edx
mov s4,ecx
}
sprintf(CpuId, "%08X%08X", s1, s2);
return 0;
}
catch (...)
{
return -1;
}
}
- 获取本机IP、MAC地址、CPUID
- 获取本机ip及mac地址
- C# 获取本机IP MAC地址
- 获取本机名、本机IP、MAC地址
- java中获取本机IP 本机mac地址
- javascript获取本机ip地址 mac地址 机器名
- javascript获取本机ip地址 mac地址 机器名
- javascript获取本机ip地址 mac地址 机器名
- 获取本机IP地址及MAC地址
- 通过vbs获取本机IP地址和MAC地址
- Android获取本机Mac地址及IP地址方法
- delphi 获取本机IP地址和MAC地址
- QT 获取 本机IP地址 MAC地址
- android:获取本机Mac地址及IP地址方法
- Java获取本机MAC地址/IP地址/主机名
- vbscript获取本机的ip地址和mac地址
- delphi 获取本机IP地址和MAC地址
- Android获取本机ip地址和Mac地址
- MySql的源代码文件夹
- java中的匿名内部类总结
- [授权发表]用 kGDB 调试 Linux 内核
- php中文乱码问题
- 【剑指Offer学习】【面试题2 : 实现Singleton 模式——七种实现方式】
- 获取本机IP、MAC地址、CPUID
- 递归函数的理解
- 浅谈C++多态性
- Java系列-Set、List、Map的遍历总结
- 【剑指Offer学习】【面试题3 :二维数组中的查找】
- Spring不支持依赖注入static静态变量
- [授权发表]如何快速定位 Linux Panic 出错的代码行
- 【剑指Offer学习】【面试题4 : 替换空格】
- collectionView的Item偶尔会跑到屏幕外面(已解决)