C++ MAC Address 여러 개 가져오기 (MFC 윈도우 호환 소스)
담백하게 소스만 알려드리겠습니다. 먼저, 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 윈도우 호환 소스)
댓글