Netbios 获取MAC (博客园第一篇自己的技术文章)

博主分享了解决使用Netbios获取MAC地址时遇到的问题,包括添加头文件、动态库和修正代码,最终成功获取网卡MAC地址的过程。文中详细记录了从遇到问题到解决问题的完整步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "StdAfx.h"
#include <nb30.h>
#pragma comment(lib,"NETAPI32.LIB")
void GetMac()
{
char strMac[256];
int ret;
int i=0;
char mac[1024];
char buf[256];
NCB ncb;
ADAPTER_STATUS adapt;
memset(buf,0,sizeof(buf));
memset(mac,0,sizeof(mac));
memset(&ncb,0,sizeof(ncb));
for(i=0;i<8;i++)
{
ncb.ncb_command=NCBRESET;//发送命令进行初始化
ncb.ncb_lana_num=i;
ret=Netbios(&ncb);
//sprintf(buf,"ret is %x",ret);
// MessageBox(0,buf,0,0);
//发送ncbastat获取网卡信息
if(0!=ret)
{
continue;
}
//MessageBox(0,buf,0,0);
ncb.ncb_command=NCBASTAT;
ncb.ncb_lana_num=i;
strcpy((char *)ncb.ncb_callname,"*");
ncb.ncb_buffer=(unsigned char *)&adapt;
ncb.ncb_length=sizeof(adapt);
//这里都要填对应
Netbios(&ncb);
if(adapt.adapter_type==0XFF)
{
strcat(mac,"Token Ring adapter ");
}
else
if(adapt.adapter_type==0XFE)
{
strcat(mac," Ethernet adapter ");
}
sprintf(strMac,"%d MAC 地址是:%02X%02X-%02X%02X-%02X%02X\r\n",
i,
adapt.adapter_address[0],
adapt.adapter_address[1],
adapt.adapter_address[2],
adapt.adapter_address[3],
adapt.adapter_address[4],
adapt.adapter_address[5]);
strcat(mac,strMac);
}
MessageBox(0,mac,0,0);
}

昨天无聊就想想写一些网络程序。
本想写一一个聊天工具,但发现没有c+sdk的聊天代码。
大多数都是MFC的,(主要是自己不懂多线程和Winsock I/O 异步模型,现在还在学习中)。现在不是很喜欢MFC所以就胡乱的翻开自己的电子书。
看到一个获取MAC源程序。
不过不幸的也是MFC。由于代码比较简单我就改成为sdk+c模式的。
不过很悲剧的时候,几乎一样的代码出先错误。(原来没有添加头,和动态库(库还是自己在目录下自己找的,随便一猜尽然猜对了。))
但改了后,发现尽然不能获取的自己MAC地址。
我勒个去,一模一样的代码啊。。于是百度,百了好久,发现和我一样的问题。他和他书上一模样的代码也得不出来。
他的也没有结果,但我还不死心继续百度,结果我还是没有找到。于是我彻底失望了。无聊翻着自己电子书。竟然我看到有关Netbios的一些协议的内容,
原来自己每一个网卡都一个Lana编码。书上说0~9。但我发现实际是0~8。如是我自己验证,果然是这样的,我太聪明了。嘻嘻。。。。
可能是那本书太老了,是xp以前的系统吧。。。

转载于:https://www.cnblogs.com/c-study/archive/2011/12/11/2284012.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值