//
// Link with ws2_32.lib and iphlpapi.lib
//
#include
#include
#include
#include
int __cdecl main()
{
HRESULT hr;
IPAddr ipAddr;
ULONG pulMac[2];
ULONG ulLen;
ipAddr = inet_addr ("192.168.25.31");
memset (pulMac, 0xff, sizeof (pulMac));
ulLen = 6;
hr = SendARP (ipAddr, 0, pulMac, &ulLen);
printf ("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]);
printf ("MAC address %s\n", szMac);
delete [] szMac;
return 0;
}
IP 주소를 이용해서 MAC 주소를 찾는 방법은
간단히 SendARP 를 이용하여 구현 할 수 있습니다
ARP란 IP를 주소를 MAC 주소로 바꾸어 주는 프로토콜 입니다.
다행이 프로토콜 구현할 필요 없이 MFC에서 제공을 해 주고 있습니다.
위의 코드를 구동 해 보시면 프로그램이 정상적으로 움직이는 것을 볼 수 있으십니다.
단, ws2_32.lib, iphlpapi.lib를 추가 하셔야 합니다.
어디에 추가를 할까요 ???
메뉴->프로젝트->셋팅->탭(Link)클릭->Object/library modules: 밑에
두개를 적으시면 됩니다.
ws2_32.lib, iphlpapi.lib 이렇게 말입니다.
또한, iphlpapi.lib는 Microsoft SDK 2003을 설치 하셔야 합니다.
일반적인 VC6.0에서는 iphlpapi.lib가 존재 하지 않습니다.
Microsoft SDK 2003은 MS Site에서 무상으로 제공하기 때문에
다운 받으셔서 사용하시면 됩니다.(Setup 누르시고 설치 ^^)
설치가 끝나시면 메뉴->tool->option->Directory에 보시면
SDK 경로가 추가 된 것을 볼 수 있습니다. ( 없으면 직접 추가 시켜 주세요 )
이와 같은 작업이 완료 된 후에
프로그램이 구동 됩니다.