如何得到指定IP地址网卡的MAC地址?

54783szg 2003-08-28 05:31:42
我如何可以得到局域网内所有IP地址及其相应的网卡MAC地士址?
...全文
57 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yantan 2003-11-04
  • 打赏
  • 举报
回复
netbios只对windows操作系统起作用,对于 linux,sco,unix等其他的用snmpget取得
cnphw 2003-11-04
  • 打赏
  • 举报
回复
ADAPTER_STATUS adapt;
报错
[C++ Error] Unit2.cpp(104): E2303 Type name expected
是不头文件没有包含
klfbaby 2003-09-02
  • 打赏
  • 举报
回复
命令行里敲命令就行了
nbtstat -a IP
叶子哟 2003-08-28
  • 打赏
  • 举报
回复
bool GetMAC(char *Mac)
{
AnsiString msg;
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff [30];
}ASTAT, *PASTAT;

ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
char tmp[40];
Mac[0]='\0';
memset( &ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBRESET;
ncb.ncb_lana_num = 0;
uRetCode = Netbios( &ncb );
if (uRetCode!=0)
{
strcat(Mac,"Init Error!");
return false;
}
memset(&ncb, 0, sizeof(ncb) );
ncb.ncb_command = NCBASTAT;
ncb.ncb_lana_num = 0;
strcpy((char *)ncb.ncb_callname, "*" );//这个"*"代表获得本机网卡地址,换成IP地址就可以获得局域网内其他机器的网卡地址。
ncb.ncb_buffer =(unsigned char *) &Adapter;
ncb.ncb_length = sizeof(Adapter);
uRetCode = Netbios(&ncb);
if (uRetCode == 0 )
{
sprintf(Mac, "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 true;
}
else
{
strcat(Mac,"Unknown.");
return false;
}
}


void __fastcall TForm1::Button3Click(TObject *Sender)
{
char Mac[30];
GetMAC(Mac);
ShowMessage(Mac);
}

1,316

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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