📄 bcb.getmacfromip.txt
字号:
//---------------------------------------------------------------------------
//通过IP地址获取MAC地址
#include "winsock.h"
#include <nb30.h>
#include <iostream.h>
LPCSTR __fastcall GetMacFromIP(AnsiString strIP)
{
WSAData GInitData;
if (WSAStartup(MAKEWORD(2,1),&GInitData) != 0)
{
return "初始化SOCKET函数失败!";
}
typedef struct _ASTAT_
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuf[30];
}ASTAT,* PASTAT;
ASTAT Adapter;
NCB ncb;
UCHAR uRetCode;
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command=NCBRESET;
ncb.ncb_lana_num=0;
uRetCode=Netbios(&ncb);
memset(&ncb,0,sizeof(ncb));
ncb.ncb_command=NCBASTAT;
ncb.ncb_lana_num=0;
strcpy((char *)ncb.ncb_callname,strIP.c_str());
ncb.ncb_buffer=(unsigned char *)&Adapter;
ncb.ncb_length=sizeof(Adapter);
uRetCode=Netbios(&ncb);
if(uRetCode==0)
{
char mac[15], * lpmac;
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]);
lpmac=mac;
WSACleanup();
return lpmac;
}
else
{
WSACleanup();
return "无法解释MAC地址";
}
}
/* 测试代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(GetMacFromIP("192.168.110.226"));
}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -