본문 바로가기
프로그래밍

👨‍💻 [MFC] MFC 에서 네트워크 정보를 얻어오려면 어떻게 해야 하나요?

by 밝음의기둥 2024. 10. 21.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

MFC 에서 현재 PC의 네트워크 정보를 알아야 하는 상황이 생겨서, 네트워크 정보를 얻어오는 방법에 대해서 알아보았습니다..


질문 >

MFC 에서 네트워크 정보를 얻어오려면 어떻게 해야 하나요?

답변 >

MFC(Microsoft Foundation Classes)에서 네트워크 정보를 얻어오려면 Win32 API를 사용하여 네트워크 정보를 가져올 수 있습니다. 다음은 예제로, MFC 응용 프로그램에서 네트워크 어댑터 정보를 가져오는 방법을 설명합니다.

  1. 필요한 헤더 파일 포함:
#include <afxwin.h>
#include <iphlpapi.h>
#include <vector>
#pragma comment(lib, "iphlpapi.lib")

  1. 네트워크 어댑터 정보를 가져오는 함수 작성:
std::vector<PIP_ADAPTER_INFO> GetNetworkAdapters() {
    std::vector<PIP_ADAPTER_INFO> adapters;
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
    PIP_ADAPTER_INFO pAdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof(IP_ADAPTER_INFO));

    if (pAdapterInfo == nullptr) {
        AfxMessageBox(_T("Error allocating memory needed to call GetAdaptersinfo"));
        return adapters;
    }

    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        free(pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *)malloc(ulOutBufLen);

        if (pAdapterInfo == nullptr) {
            AfxMessageBox(_T("Error allocating memory needed to call GetAdaptersinfo"));
            return adapters;
        }
    }

    if (GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) == NO_ERROR) {
        PIP_ADAPTER_INFO pAdapter = pAdapterInfo;
        while (pAdapter) {
            adapters.push_back(pAdapter);
            pAdapter = pAdapter->Next;
        }
    } else {
        AfxMessageBox(_T("GetAdaptersInfo failed"));
    }

    return adapters;
}

  1. 네트워크 어댑터 정보를 출력하는 함수 작성:
void PrintNetworkAdapters() {
    auto adapters = GetNetworkAdapters();

    for (const auto& adapter : adapters) {
        CString msg;
        msg.Format(_T("Adapter Name: %s\\nDescription: %s\\nIP Address: %s\\n"),
                   adapter->AdapterName,
                   adapter->Description,
                   adapter->IpAddressList.IpAddress.String);
        AfxMessageBox(msg);
    }

    // 메모리 해제
    for (auto& adapter : adapters) {
        free(adapter);
    }
}

  1. 응용 프로그램에서 함수 호출: MFC 애플리케이션의 적절한 위치 (예: 버튼 클릭 이벤트 핸들러)에서 PrintNetworkAdapters 함수를 호출합니다.
void CMyAppDlg::OnBnClickedButtonGetNetworkInfo() {
    PrintNetworkAdapters();
}

이 코드는 MFC 애플리케이션에서 네트워크 어댑터 정보를 가져와 출력하는 간단한 예제입니다. Win32 API의 GetAdaptersInfo 함수를 사용하여 네트워크 어댑터 정보를 얻고, 이를 메시지 박스를 통해 출력합니다. GetAdaptersInfo는 네트워크 어댑터 목록을 반환하며, 각 어댑터에 대한 정보를 포함합니다.


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

 

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com

 


반응형