Jean-Sebastien Stoezel schrieb:
Hello,
How to get the MAC address of an ethernet interface, using the boost
C++ library?
Well it's not implemented in boost. I can show you an example how to get
it on linux and windows (I had to get it for a library I am working on).
However that's just the rough way, I'm not in need to get it for a
specific interface, but with this you'll find the needed info faster ;)
Linux:
#include
#include
#include
#include
#include
#include
#include
ifaddrs * ifap = 0;
if(getifaddrs(&ifap) == 0)
{
ifaddrs * iter = ifap;
while(iter)
{
sockaddr_ll * sal =
reinterpret_cast(iter->ifa_addr);
if(sal->sll_family == AF_PACKET)
{
// get the mac bytes
// copy(sal->sll_addr,
// sal->sll_addr+sal->sll_hallen,
// buffer);
}
iter = iter->ifa_next;
}
freeifaddrs(ifap);
}
Windows:
#include
#include
std::vectorboost::uint8_t buf;
DWORD bufLen = 0;
GetAdaptersAddresses(0, 0, 0, 0, &bufLen);
if(bufLen)
{
buf.resize(bufLen, 0);
IP_ADAPTER_ADDRESSES * ptr =
reinterpret_cast(&buf[0]);
DWORD err = GetAdaptersAddresses(0, 0, 0, ptr, &bufLen);
if(err == NO_ERROR)
{
while(ptr)
{
if(ptr->PhysicalAddressLength)
{
// get the mac bytes
// copy(ptr->PhysicalAddress,
// ptr->PhysicalAddress+ptr->PhysicalAddressLength,
// buffer);
}
ptr = ptr->Next;
}
}
}
Regards,
Vinzenz