您的位置:首页 > 其它

MFC下如何获取本机IP和mac地址?

2015-05-13 15:34 267 查看
CString <span style="color:#cc0000;">myIP</span>,<span style="color:#cc0000;">myMac</span>;
<span style="color:#6600cc;background-color: rgb(255, 255, 255);">GetLocoalIPandMac</span>(myIP, myMac);
bool <span style="color:#000099;">yourClassName</span>::<span style="color:#6600cc;">GetLocoalIPandMac</span>(CString& csIP,CString& myMac)
{
//	UCHAR  MacAddress[6];
bool bNetReady = false;
ULONG outBufLen = 0;
DWORD dwRetVal = 0;

PIP_ADAPTER_INFO pAdapterInfo;
PIP_ADAPTER_INFO pAdapterInfoTmp = NULL;

pAdapterInfo = (IP_ADAPTER_INFO*)GlobalAlloc(GMEM_ZEROINIT, sizeof(IP_ADAPTER_INFO));
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);

if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS)
{
GlobalFree (pAdapterInfo);
pAdapterInfo = (IP_ADAPTER_INFO*)GlobalAlloc(GMEM_ZEROINIT, ulOutBufLen);
}

if((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
{
pAdapterInfoTmp = pAdapterInfo;

csIP = "";
/*dwIP = 0;
dwMask = 0;*/

while(pAdapterInfoTmp)
{
if(pAdapterInfoTmp->Type == MIB_IF_TYPE_ETHERNET)
{
if(pAdapterInfoTmp->CurrentIpAddress)
{
csIP = pAdapterInfoTmp->CurrentIpAddress->IpAddress.String;
/*dwIP = inet_addr(pAdapterInfoTmp->CurrentIpAddress->IpAddress.String);
dwMask = inet_addr(pAdapterInfoTmp->CurrentIpAddress->IpMask.String);*/
}
else
{
csIP = pAdapterInfoTmp->IpAddressList.IpAddress.String;
/*dwIP = inet_addr(pAdapterInfoTmp->IpAddressList.IpAddress.String);
dwMask = inet_addr(pAdapterInfoTmp->IpAddressList.IpMask.String);*/
}
}

if(!csIP.IsEmpty() && (csIP.CompareNoCase(_T("0.0.0.0")) != 0))
{
bNetReady = true;
myMac.Format(_T("%02X%02X%02X%02X%02X%02X"),
pAdapterInfoTmp->Address[0],
pAdapterInfoTmp->Address[1],
pAdapterInfoTmp->Address[2],
pAdapterInfoTmp->Address[3],
pAdapterInfoTmp->Address[4],
pAdapterInfoTmp->Address[5]);
break;
}

pAdapterInfoTmp = pAdapterInfoTmp->Next;
}
}

GlobalFree (pAdapterInfo);

return bNetReady;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: