0
Q
獲取網卡地址
A
回答
0
在Windows中,你可以使用GetAdaptersAddresses功能,檢索phsyical地址。
std::string ConvertPhysicalAddressToString(BYTE* p_Byte, int iSize)
{
string strRetValue;
char cAux[3];
for(int i=0; i<iSize; i++)
{
sprintf_s(cAux,"%02X", p_Byte[i]);
strRetValue.append(cAux);
if(i < (iSize - 1))
strRetValue.append("-");
}
return strRetValue;
}
void GetEthernetDevices(std::vector<std::string> &vPhysicalAddress)
{
// Call the Function with 0 Buffer to know the size of the buffer required
unsigned long ulLen = 0;
IP_ADAPTER_ADDRESSES* p_adapAddress = NULL;
if(GetAdaptersAddresses(AF_INET, 0, NULL, p_adapAddress,&ulLen) == ERROR_BUFFER_OVERFLOW)
{
p_adapAddress = (PIP_ADAPTER_ADDRESSES)malloc(ulLen);
if(p_adapAddress)
{
DWORD dwRetValue = GetAdaptersAddresses(AF_INET, 0, NULL, p_adapAddress,&ulLen);
if(dwRetValue == NO_ERROR)
{
IP_ADAPTER_ADDRESSES* p_adapAddressAux = p_adapAddress;
do
{
// Only Ethernet
if(p_adapAddressAux->IfType == IF_TYPE_ETHERNET_CSMACD)
vPhysicalAddress.push_back(ConvertPhysicalAddressToString(p_adapAddress->PhysicalAddress, p_adapAddress->PhysicalAddressLength));
p_adapAddressAux = p_adapAddressAux->Next;
}
while(p_adapAddressAux != NULL);
}
free(p_adapAddress);
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<std::string> vPhysicalAddress;
GetEthernetDevices(vPhysicalAddress);
}
+0
超級...謝謝.. :) –
相關問題
- 1. 從內核模塊獲取本地網卡的IP地址
- 2. 從網址獲取IP地址
- 3. 獲取MAC地址,在Windows 7中,當網卡是用C#
- 4. 如何使用Delphi獲取網卡的MAC地址?
- 5. 獲取網址
- 6. 獲取具有MAC地址的以太網卡的網絡使用情況
- 7. 在C/C++中獲取網關地址
- 8. 在Android中獲取網絡IP地址
- 9. 獲取無線網絡地址問題
- 10. 如何僅獲取IP地址/子網
- 11. 從Hazelcast網格獲取主IP地址
- 12. 在LUA中獲取網關地址esp8266
- 13. 從默認網關獲取mac地址?
- 14. WP7獲取Wi-Fi網關IP地址
- 15. 如何獲取網頁鏈接地址
- 16. 獲取網絡用戶的IP地址
- 17. 獲取廣域網地址Java
- 18. Ping網絡並獲取mac地址
- 19. 獲取網址地址來檢測網絡代理
- 20. 如何從網絡上的IP地址獲取MAC地址?
- 21. 在卡薩布蘭卡獲取HTTP請求的IP地址
- 22. 獲取fb.me網址
- 23. 獲取Firefox網址?
- 24. 獲取IP地址
- 25. 獲取從地址
- 26. 獲取MAC地址
- 27. 獲取IP地址
- 28. 獲取地址_components
- 29. 獲取IP地址
- 30. 獲取.lib地址
做什麼,你打算做什麼? –
什麼操作系統? (我相信這已經被問了好幾次了。)另外,你說的NIC地址是什麼意思?蘋果電腦? IP? – Mat
你在考慮什麼操作系統? –