2014년 10월 26일 일요일

(MFC) 설치된 랜카드 검색 및 IP얻어오기

DWORD Err;
    PIP_ADAPTER_INFO pAdapterInfo, pAdapt;
    DWORD AdapterInfoSize = 0;
    PIP_ADDR_STRING pAddrStr;

    //버퍼 사이즈 알아오기
    if ((Err = GetAdaptersInfo(NULL, &AdapterInfoSize)) != 0)
    {
        if (Err != ERROR_BUFFER_OVERFLOW)
        {
            return FALSE;          
        }
    }
    //버퍼 동적 할당      
    if ((pAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[AdapterInfoSize]) == NULL)
    {
        return FALSE;      
    }
    //어댑터 정보 얻어오기  
    if ((Err = GetAdaptersInfo(pAdapterInfo, &AdapterInfoSize)) != 0)
    {
        return FALSE;
    }
    pAdapt = pAdapterInfo;
    int i=0;
    while (pAdapt) -->이반복문에서 랜카드 갯수 만큼 루프를 돌면서 주소값을 얻어옵니다.
    {
        pAddrStr=&(pAdapt->IpAddressList);
        g_sClientinternalsockaddr.bySockaddrcount=(i+1);
        while(pAddrStr)
        {
            g_sClientinternalsockaddr.asockaddr[i].sin_addr.S_un.S_addr=inet_addr(pAddrStr->IpAddress.String);        
            pAddrStr = pAddrStr->Next;
        }
        pAdapt = pAdapt->Next;
        i++;
    }
    delete pAdapterInfo;
    pAdapterInfo=NULL;


출처 : 데브피아

댓글 없음: