< しょぼ Hash クラス | Windows 2000 Professional で、SNTP クライアントを構成する >

February 24, 2006

ローカルネットワークを選択するコンボボックス

TCP サーバや UDP アプリなどの設定画面に登場する、バインドするネットワークアドレスを選択するコンボボックスです。はい、ものすごく限定的な Tips です。ネットワークインターフェースの列挙方法の一例、かな?

BOOL CXXXDialog::InitNetworkCombo (void)
{
    char szHostName [MAX_PATH];
    ZeroMemory (szHostName, sizeof szHostName);
    m_ComboNetwork.Clear ();
    
    // このコンピュータのホスト名を取得する
    int nRet = gethostname (szHostName, sizeof szHostName);
    if (SOCKET_ERROR == nRet)
    {
        // エラー処理
    }
    else
    {
        // ホスト名よりホストの情報を取得する
        struct hostent* pHostEnt = gethostbyname (szHostName);
        if (!pHostEnt)
        {
            // エラー処理
        }
        else
        {
            // INADDR_ANY を追加する
            int nIndex = m_ComboNetwork.AddString (_T ("すべてのネットワーク"));
            m_ComboNetwork.SetItemData (nIndex, INADDR_ANY);
            
            // 取得したアドレスのリストをコンボボックスに追加する
            for (int nCount = 0; pHostEnt->h_addr_list [nCount]; nCount ++)
            {
                struct in_addr Address;
                memcpy (&Address, pHostEnt->h_addr_list [nCount], sizeof (struct in_addr));
                nIndex = m_ComboNetwork.AddString (inet_ntoa (Address));
                m_ComboNetwork.SetItemData (nIndex, Address.S_un.S_addr);
            }
            
            // ループバックを追加する
            nIndex = m_ComboNetwork.AddString (_T ("127.0.0.1"));
            m_ComboNetwork.SetItemData (nIndex, INADDR_LOOPBACK);
            return TRUE;
        }
    }
    return FALSE;
}

トラックバック

このエントリーにトラックバック:
http://frog.raindrop.jp/cgi-bin/mt/mt-tb.cgi/1288

コメント

コメントする

※ コメントスパム対策のため、コメント本文はおはよう、こんにちわ、こんばんわのいずれかより始めるようにしてください。

name:
email:

※ 必要ですが、表示しません。

url:
情報を保存する ?