『windows』获得MAC地址的C语言实现

转载 2013年12月02日 16:12:27

原文地址:获得MAC地址的C语言实现


#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <httpext.h>
#include <windef.h>
#include <Nb30.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"netapi32.lib")
void CheckIP(void)
{
WSADATA wsaData;
char name[155];
char *ip;
PHOSTENT hostinfo;
if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 )
{
if( gethostname ( name, sizeof(name)) == 0)
{
   if((hostinfo = gethostbyname(name)) != NULL)
   {
    ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
    printf(" IP地址: %s ",ip);
   }
}
WSACleanup( );
}
}
int getMAC(char * mac)
{
NCB ncb; // Network control block
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 uRetCode;

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 uRetCode;

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 uRetCode;
sprintf(mac,"%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;
}
int main(void)
{
CheckIP();
char   mac[200];
getMAC(mac);
printf(" mac地址 : %s ",mac);
return 0;
}


Linux C语言获取设备MAC地址

#include #include #include #include #include #include void main() { char *device="eth0"; //teh...
  • simon_2011
  • simon_2011
  • 2014年09月15日 13:52
  • 2685

如何通过C语言自动生成MAC地址

如何通过C语言自动生成MAC地址       最近在做虚拟机项目时,需要给创建的每一个虚拟机自动生成一个MAC地址,由于MAC地址为48位,而且格式是以:隔开的,所以下面我写了一个c程序,来...
  • chenglinhust
  • chenglinhust
  • 2012年09月24日 14:29
  • 2862

linux系统下C语言获取和设置本地MAC地址的代码

怎样获取和设置本地网络MAC地址呢? 方法一 int macAddrSet(UINT8* mac) { struct ifreq temp; struct sockaddr* addr; ...
  • mantis_1984
  • mantis_1984
  • 2015年05月17日 14:18
  • 1974

C语言获取本地所有网卡的ip地址及MAC信息

C语言获取网卡的ip地址及MAC地址信息
  • sky619351517
  • sky619351517
  • 2017年09月15日 21:32
  • 114

Linux下C语言获取所有网卡MAC地址的代码

Linux下C语言获取所有网卡MAC地址的代码 原文:http://www.open-open.com/code/view/1432215294567 #include #include ...
  • rock4you
  • rock4you
  • 2017年04月20日 21:52
  • 1532

vuejs使用指南(一)

前言 最近在写一个项目,然后由于采用的前后端分离传递数据,页面的渲染由前端来完成,于是就想说试一下vuejs,因为实在是不想用jq的dom操作,jq的dom操作对于页面的节点增加和删除,我感觉还好。...
  • sinat_25127047
  • sinat_25127047
  • 2016年09月28日 11:22
  • 15130

Vue.js - 学习笔记 (一)

简介 实际上,所有的前台程序都可以分为View以及Model两个层次,Model层使用字面量以及JS特性创建数据模型,并搭载用户数据,View层则以用户友好的方式呈现Model层数据,并提供友好的交...
  • The_c_D
  • The_c_D
  • 2016年07月24日 14:39
  • 1505

Vue.js 2.5 发布,而这个会玩的团队已经自研出用 Vue 开发小程序的框架了

在尤大微博铺垫着“将会引入一些关于 TypeScript 的改进”一周之后,代号为 Level E 的 Vue.js 2.5 带着日漫风来到了我们眼前。从 Release Notes 可以看到,Vue...
  • csdnnews
  • csdnnews
  • 2017年10月16日 18:50
  • 12530

Vue.js 2 vs Vue.js 3的实现 – 云栖社区

Vue.js 2 vs Vue.js 3的实现 – 云栖社区 vue.js核心团队已经讨论过将在Vue3实现的变化。虽然API不会改变,但是数据响应机制(译者注:对数据改变的监听和通知)发生了变...
  • w178191520
  • w178191520
  • 2018年01月04日 21:58
  • 232

基于vue-cli的vue项目之axios的使用5--axios方法发送请求

既然jq有ajax方法,那么axios有没有axios方法?答案是肯定的,依旧隐藏了域名 1.配置config/index.js:解决跨域问题 dev: { env: require('./dev...
  • HUSHILIN001
  • HUSHILIN001
  • 2017年09月08日 11:26
  • 291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:『windows』获得MAC地址的C语言实现
举报原因:
原因补充:

(最多只允许输入30个字)