본문 바로가기
C++ 200제/코딩 IT 정보

C++ MAC Address 여러 개 가져오기 (MFC 윈도우 호환 소스)

by vicddory 2018. 6. 5.

C++ MAC Address 여러 개 가져오기 (MFC 윈도우 호환 소스)


C++ MAC Address 여러 개 가져오기


담백하게 소스만 알려드리겠습니다. 먼저, IP_ADAPTER_INFO 변수를 만듭니다. 그리고 윈도우 기반의 컴퓨터에서 MAC Address를 가져옵니다.


아래는 그 과정이고요.


1
2
3
4
5
6
7
8
9
10
IP_ADAPTER_INFO *adapter_info;
DWORD result;
ULONG info_size = sizeof(IP_ADAPTER_INFO);
 
adapter_info = (IP_ADAPTER_INFO *)malloc(info_size);
 
if (adapter_info == NULL)
    return -1;
 
result = GetAdaptersInfo(adapter_info, &info_size)
cs


여기서 하나 걸리는 것이 있습니다.


네트워크 카드(NIC)가 1개라면 상관없지만, 여러 개라면 여러 개 MAC Address를 처리할 방법이 필요하죠. 그래서 제가 직접 구현하진 않고 직접 검색해서 알아봤습니다.


역시, 코드 프로젝트는 훌륭해요. 거기서 샘플을 얻었습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
char str[13];
unsigned char mac[6];
 
list<char[13]> mac_address;
 
if (result == NO_ERROR)
{
    IP_ADAPTER_INFO *adapter = adapter_info;
 
    do {
        for (i = 0; i < 6; i++)
            mac[i] = (unsigned char)adapter->Address[i];
            sprintf_s(str, "%02x%02x%02x%02x%02x%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
            mac_address.push_back(str);
 
            adapter = adapter->Next;
    } while (adapter);
}
else
{
    nret = -1;
}
 
free(adapter_info);
cs


제가 안 좋아하는 do while문을 사용하여 NIC 여러 개의 MAC Address를 모두 얻을 수 있습니다.


IP_ADAPTER_INFO 변수에서 랜 카드 개수만큼 정보를 얻어와 개별로 처리하는 것이죠.


C++ MAC Address 여러 개 가져오기 (MFC 윈도우 호환 소스)

댓글