IPアドレスから、MACアドレスを取得

(2002.02.03)
CString GetMacAddress(LPCTSTR szIPAddress)
{
    CString strResult;
    
    HRESULT hr = S_OK;
    
    IPAddr ipAddr = inet_addr(szIPAddress);
    ULONG pulMac[2];
    memset(pulMac, 0xff, sizeof(pulMac));
    ULONG ulLen = 6;
    
    hr = ::SendARP(ipAddr, 0, pulMac, &ulLen);
    if (FAILED(hr))
    {
        return CString();
    }
// TRACE("Return %08x, length %8d\n", hr, ulLen);
    
    size_t i, j;
    char* szMac = new char[ulLen * 3];
    PBYTE pbHexMac = (PBYTE)pulMac;
    
    // Convert the binary MAC address into human-readable
    for (i = 0, j = 0; i < ulLen - 1; ++i)
    {
        j += sprintf (szMac + j, "%02X:", pbHexMac[i]);
    }
    
    sprintf (szMac + j, "%02X", pbHexMac[i]);
// TRACE ("MAC address %s\n", szMac);
    
    strResult = szMac;
    
    delete [] szMac;
    
    return strResult;
}
一覧に戻る
© 2003 WAC.com All Right Reserved.