关于获取路由器MAC地址,用C++代码

hp1351215008 2013-05-13 03:41:40
您好!恳求各位大神,如何在MFC框架中或者只用C++代码来获取路由器的MAC地址。恳请各位大神帮忙。谢谢!!
...全文
289 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hp1351215008 2013-05-16
  • 打赏
  • 举报
回复
您好!我要的是去路由器的MAC地址,不是去本机的MAC地址。谢谢!!!!!!!!!!!!!!!!!!!
笨笨仔 2013-05-15
  • 打赏
  • 举报
回复
提供一个函数,你自己在.h中建个函数声明。

#pragma comment(lib, "Iphlpapi.lib")		// 动态加载库
// 取本机MAC
void CUDPcommThread::GetLocalMac(u_char* mac)
{
	PIP_ADAPTER_INFO pAdapterInfo;
	PIP_ADAPTER_INFO pAdapter=NULL;
	DWORD dwRetVal=0;
	pAdapterInfo=new IP_ADAPTER_INFO;	// 分配空间
	ULONG ulOutBufLen=sizeof(IP_ADAPTER_INFO);
	if(GetAdaptersInfo(pAdapterInfo,&ulOutBufLen)!=ERROR_SUCCESS)
	{
		delete pAdapterInfo;
		return;
	}
	if((dwRetVal=GetAdaptersInfo(pAdapterInfo,&ulOutBufLen))==NO_ERROR)
	{
		pAdapter=pAdapterInfo;
		memcpy((BYTE*)mac,pAdapter->Address,6);
		while(pAdapter)
		{
			if(pAdapter->Type == MIB_IF_TYPE_ETHERNET)
				memcpy((BYTE*)mac,pAdapter->Address,6);
			pAdapter=pAdapter->Next;
		}
	}
	delete pAdapterInfo;
}
mayzz618 2013-05-15
  • 打赏
  • 举报
回复
楼主,你有点过分了,,,,
hp1351215008 2013-05-14
  • 打赏
  • 举报
回复
您好!您能在帮我解释下上面的代码吗,在下感激不进!!!!!!!!!!!!!!
青松2 2013-05-13
  • 打赏
  • 举报
回复
#include <windows.h> #include <stdlib.h> #include <stdio.h> #include <time.h> /* Dev C++ -> include libnetapi32.a BCC 5.5 or VC++ -> #pragma comment(lib,"netapi32.lib") */ typedef struct _ASTAT_ { ADAPTER_STATUS adapt; NAME_BUFFER NameBuff [30]; } ASTAT, *PASTAT; void getMac(char * mac) { ASTAT Adapter; NCB Ncb; UCHAR uRetCode; LANA_ENUM lenum; int i = 0; memset(&Ncb, 0, sizeof(Ncb)); Ncb.ncb_command = NCBENUM; Ncb.ncb_buffer = (UCHAR *)&lenum; Ncb.ncb_length = sizeof(lenum); uRetCode = Netbios( &Ncb ); printf( "The NCBENUM return adapter number is: %d \n ", lenum.length); for(i=0; i < lenum.length ; i++) { memset(&Ncb, 0, sizeof(Ncb)); Ncb.ncb_command = NCBRESET; Ncb.ncb_lana_num = lenum.lana[i]; uRetCode = Netbios( &Ncb ); memset(&Ncb, 0, sizeof(Ncb)); Ncb.ncb_command = NCBASTAT; Ncb.ncb_lana_num = lenum.lana[i]; strcpy((char *)Ncb.ncb_callname, "* "); Ncb.ncb_buffer = (unsigned char *) &Adapter; Ncb.ncb_length = sizeof(Adapter); uRetCode = Netbios( &Ncb ); if (uRetCode == 0) { //sprintf(mac, "%02x-%02x-%02x-%02x-%02x-%02x ", 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] ); //printf( "The Ethernet Number on LANA %d is: %s\n ", lenum.lana[i], mac); } } } int main(int argc, char *argv[]) { char *mac=new char[32]; getMac(mac); printf( "%s\n ", mac); delete[]mac; system( "PAUSE> NUL "); return 0; }

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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