ローカルネットワークを選択するコンボボックス
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
コメント