高分求助!如何利用NetBIOS名获得对方的Mac地址?

xghome 2002-09-23 09:36:51
我们有一个程序可以获得通讯对方的NetBIOS名,可是,如何通过这个名字得到对方的Mac地址呢?我们的程序工作在2000或者NT下
...全文
69 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuwenzheng 2002-09-24
  • 打赏
  • 举报
回复
http://www.codeguru.com/network/GetMAC.html
xghome 2002-09-23
  • 打赏
  • 举报
回复
syh_17(神探柯南)
可能不行,我不确定是不是一定有TCP/IP协议存在,也可能只有NetBEUI或者IPX协议
syh_17 2002-09-23
  • 打赏
  • 举报
回复
http://it.rising.com.cn/safety/syjq/syjq/020606mac.htm
不知道对你有没有用
xghome 2002-09-23
  • 打赏
  • 举报
回复
请问楼上的,这是获得本机的还是获得对方的?NetBIOS名在哪里输入?
oldworm 2002-09-23
  • 打赏
  • 举报
回复

BOOL GetAdapterInfo(int nAdapterNum, CString & sMAC)
{
// Reset the LAN adapter so that we can begin querying it
NCB Ncb;
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = nAdapterNum;
if (Netbios(&Ncb) != NRC_GOODRET) {
sMAC.Format("error %d on reset", Ncb.ncb_retcode);
return FALSE;
}
// Prepare to get the adapter status block
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = nAdapterNum;
strcpy((char *) Ncb.ncb_callname, "*");
struct ASTAT {
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} Adapter;
memset(&Adapter, 0, sizeof(Adapter));
Ncb.ncb_buffer = (unsigned char *)&Adapter;
Ncb.ncb_length = sizeof(Adapter);

// Get the adapter's info and, if this works, return it in standard,
// colon-delimited form.
if (Netbios(&Ncb) == 0) {
char acMAC[18];
sprintf(acMAC, "%02X:%02X:%02X:%02X:%02X:%02X",
int (Adapter.adapt.adapter_address[0]),
int (Adapter.adapt.adapter_address[1]),
int (Adapter.adapt.adapter_address[2]),
int (Adapter.adapt.adapter_address[3]),
int (Adapter.adapt.adapter_address[4]),
int (Adapter.adapt.adapter_address[5]));
sMAC = acMAC;
return TRUE;
}
else {
sMAC.Format("error %d on ASTAT", Ncb.ncb_retcode);
return FALSE;
}
}


BOOL GetMACCard(char *buf, int size)
{
LANA_ENUM AdapterList;
NCB Ncb;
memset(&Ncb, 0, sizeof(NCB));
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (unsigned char *)&AdapterList;
Ncb.ncb_length = sizeof(AdapterList);
Netbios(&Ncb);

// Get all of the local ethernet addresses
CString sMAC;
for (int i = 0; i < AdapterList.length; ++i) {
if (GetAdapterInfo(AdapterList.lana[i], sMAC)) {
strncpy(buf, (LPCTSTR)sMAC, size);
buf[size -1] = 0;
return TRUE;
}
else {
// cerr << "Failed to get MAC address! Do you" << endl;
// cerr << "have the NetBIOS protocol installed?" << endl;
return FALSE;
}
}
return FALSE;
}

注意:
#include <nb30.h>
并link netapi32.lib

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧