我的电脑上有一块有线网卡和一块无线网卡,在程序里我怎么判断一个IP地址是有线网卡还是无线网卡的

解决方案 »

  1.   

    对呀,根据IP地址取出MAC地址不就知道了?
      

  2.   

    GetAdaptersInfo看看这个函数行不行
      

  3.   

    //获得指定网卡序号的Mac地址
    void CGetMacAddrDlg::GetOneMac(int AdapterIndex)
    {
        NCB ncb;
        UCHAR uRetCode;
    ASTAT Adapter;
        memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBRESET;
        ncb.ncb_lana_num = AdapterIndex;   // 指定网卡号

    //首先对选定的网卡发送一个NCBRESET命令,以便进行初始化 
    uRetCode = Netbios( &ncb );    memset( &ncb, 0, sizeof(ncb) );
        ncb.ncb_command = NCBASTAT;
        ncb.ncb_lana_num = AdapterIndex;  // 指定网卡号    strcpy( (char *)ncb.ncb_callname,"*" );
    // 指定返回的信息存放的变量 
        ncb.ncb_buffer = (unsigned char *) &Adapter;
    ncb.ncb_length = sizeof(Adapter); // 发送NCBASTAT命令以获取网卡的信息 
    uRetCode = Netbios( &ncb );
        if ( uRetCode == 0 )
        {
    // 把网卡MAC地址格式化成常用的16进制形式,如0010-A4E4-5802 
    CString strMacAddr;
    strMacAddr.Format( "%02X%02X-%02X%02X-%02X%02X\n",
    Adapter.adapt.adapter_address[0],
    Adapter.adapt.adapter_address[1],
    Adapter.adapt.adapter_address[2],
    Adapter.adapt.adapter_address[3],
    Adapter.adapt.adapter_address[4],
    Adapter.adapt.adapter_address[5] ); //将网卡地址和序号存入数组中
    ADPTSTRCT AdptSt;
    AdptSt.nIndex = AdapterIndex;
    AdptSt.strMac = strMacAddr;
    m_arrAdapters.Add(AdptSt);
        }
    }
      

  4.   

    void CGetMacAddrDlg::OnGetaddr() 
    {
    NCB Ncb; 
        UCHAR uRetCode; 
    LANA_ENUM lenum; 
    int i = 0; 

    memset(&Ncb, 0, sizeof(Ncb)); 
    Ncb.ncb_command = NCBENUM; 
    Ncb.ncb_buffer = (UCHAR *)&lenum; 
    Ncb.ncb_length = sizeof(lenum);  //向网卡发送NCBENUM命令,以获取当前机器的网卡信息,如有多少个网卡、每张网卡的编号等 
    uRetCode = Netbios( &Ncb ); 
    //获得所有网卡信息
    for(i=0; i < lenum.length ;i++)
    {
    GetOneMac(lenum.lana[i]);
    }

    //将保存到数组中的所有网卡信息在列表中显示
    int iActualItem;
    LV_ITEM lvitem;
    TCHAR buffer[128];
    for(int iItem=0;iItem<m_arrAdapters.GetSize();iItem++)
    {
    for(int iSubItem=0;iSubItem<2;iSubItem++)
    {
    lvitem.mask = LVIF_TEXT|(iSubItem == 0? LVIF_IMAGE : 0);
    lvitem.iItem = (iSubItem == 0)? iItem : iActualItem;
    lvitem.iSubItem = iSubItem;
    lvitem.iImage = (iItem%2)?0:2;

    if (iSubItem == 0)
    {//序号
    sprintf(buffer,"%d", m_arrAdapters.GetAt(iItem).nIndex);
    lvitem.pszText = buffer;
    iActualItem = m_ctrlAdaptersLst.InsertItem(&lvitem);
    }
    else
    {//Mac地址
    sprintf(buffer,"%s",m_arrAdapters.GetAt(iItem).strMac);
    lvitem.pszText = buffer;
    m_ctrlAdaptersLst.SetItem(&lvitem);
    }
    }
    }
         
    }
      

  5.   

    由ip地址得到mac地址 和网卡类型,这样可以判断了啊!