'Code Library/VC++'에 해당되는 글 3

  1. 2007/01/19 HttpGet
  2. 2007/01/19 IP Address 가져오기
  3. 2007/01/19 Mac Address 가져오기
Code Library/VC++ | Posted by 서비 2007/01/19 10:59

HttpGet

const INT BUF_SIZE = 2048576;
TCHAR g_pBuffer[BUF_SIZE] = {0};

// 지정된 URL(strURL) 에서 소스코드를 얻는다(strSourceCode)

BOOL HttpGet(const CString& strURL, CString& strSourceCode)
{
    HINTERNET hInternet;
    hInternet = InternetOpen(_T("GBHConnect"), INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0);

    if( hInternet == NULL )
    {
        ASSERT(0);
        return FALSE;
    }

    CString strHeader = _T("Accept: */*\'\r\n\'Accept-Charset: ks_c_5601-1987\'\r\n\'");
    strHeader += _T("Accept-Language: ko\'\r\n\'Content-Encoding: ks_c_5601-1987");

    HINTERNET hInternetRequest;
    hInternetRequest = InternetOpenUrl( hInternet, strURL, strHeader, 0, INTERNET_FLAG_RELOAD, 0 );
    if( NULL == hInternetRequest )
    {
        ASSERT(0);
        return FALSE;
    }

    strSourceCode = _T("");
    BOOL bOK;

    const INT READ_SIZE = 10240;

    DWORD dwTotalReadByte = 0;
    while( TRUE )
    {
        DWORD dwNumOfBytesRead;
        bOK = InternetReadFile( hInternetRequest, &g_pBuffer[dwTotalReadByte], READ_SIZE, &dwNumOfBytesRead);
        if( FALSE == bOK ||  0 == dwNumOfBytesRead )
        {
            break;
        }
        dwTotalReadByte += dwNumOfBytesRead;


        if( bOK == FALSE )
        {
            ASSERT(0);
            InternetCloseHandle( hInternetRequest );
            InternetCloseHandle( hInternet );
            return FALSE;
        }
    }
    InternetCloseHandle( hInternetRequest );
    InternetCloseHandle( hInternet );

    g_pBuffer[dwTotalReadByte+1] = '\0';
    strSourceCode = g_pBuffer;

    return TRUE;
}
TAGHTTP
Code Library/VC++ | Posted by 서비 2007/01/19 10:46

IP Address 가져오기

CString GetIPAddress()
{
    WSADATA wsd ;

    unsigned long dwBytesRet ;
    unsigned int optval = 1 ;

    if(WSAStartup(MAKEWORD(2,1),&wsd) != 0)
    {
        return "";
    } //에러

    CString ip = "";
    char szHostName[256];
    PHOSTENT pHostInfo;

    if(gethostname(szHostName,sizeof(szHostName)) ==0)
    {
        if((pHostInfo = gethostbyname(szHostName)) != NULL)
        {
            ip = inet_ntoa(*(struct in_addr *)*pHostInfo->h_addr_list);
        }
    }
    
    return ip;
}
Code Library/VC++ | Posted by 서비 2007/01/19 10:43

Mac Address 가져오기

#include <IPHlpApi.h>                       // for GetAdaptersInfo()
#pragma comment(lib, "iphlpapi.lib" )

// MAC 가져오기

CString GetMACAddress()
{
    CString strMac;
    DWORD size = sizeof(PIP_ADAPTER_INFO);

    PIP_ADAPTER_INFO Info;

    ZeroMemory( &Info, size );

    int result = GetAdaptersInfo( Info, &size );        // 첫번째 랜카드 MAC address 가져오기

    if (result == ERROR_BUFFER_OVERFLOW)    // GetAdaptersInfo가 메모리가 부족하면 재 할당하고 재호출
    {
        Info = (PIP_ADAPTER_INFO)malloc(size);
        GetAdaptersInfo( Info, &size );
    }

    if(!Info)
        return strMac;

    strMac.Format("%0.2X-%0.2X-%0.2X-%0.2X-%0.2X-%0.2X", Info->Address[0], Info->Address[1], Info->Address[2], Info->Address[3], Info->Address[4], Info->Address[5] );

    return strMac;
}