网卡信息小程序

该博客介绍了一个实验项目,旨在创建一个显示网卡和IPv4信息的小程序。通过MFC进行界面设计,程序能展示网卡描述、IPV4信息,并将二进制MAC地址转换为16进制字符显示。实验步骤包括设置控件变量、映射网卡信息、选定网卡及显示相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验要求

1、显示网卡信息
2、显示IPV4信息

实验步骤

1、确认程序实现的功能

查询电脑上所有网卡信息,包括网卡名、MAC地址、IP地址、子关掩码、网关等信息

2、在网上查询相关资料

了解可以通过调用`GetAdaptersInfo()`获取本地网络信息保存到结构体`pAdapterInfo`中

3、通过MFC进行程序界面的设计

通过本机网卡的ComboBox下拉显示本机所有网卡,选择其中一个网卡,按下“确认”按钮进行查询,在下方的编辑框中显示该网卡的对应信息

这里写图片描述

4、设置控件变量
对对话框中的控件进行变量设置,以便对程序查询到的信息进行显示

5、映射网卡信息
pAdapterInfo以链表形式记录了本机的网卡信息,对pAdapter遍历显示网卡描述(比起网卡编号更易于人识别)到ComboBox内(通过ComboBox变量)

pAdapter = pAdapterInfo;
if (i < 1) {
        while (pAdapter) {
            //combo.AddString((LPCTSTR)pAdapter->AdapterName);
            //CString str=pAdapter->AdapterName;
            CString str;
            //str=pAdapter->AdapterName.toString();

            str = pAdapter->Description;
            //str.Format(_T("%s"), pAdapter->AdapterName);
            combo.AddString(str);
            pAdapter = pAdapter->Next;
        }
        i++;
    }

这里写图片描述

6、选定网卡功能
得到当前选择的网卡描述,并与所有网卡进行匹配,找到pAdapter链表对应的项

CString strstatus;      //定义一个字符串变量
combo.GetLBText(nSel, strstatus);    //将当前光标所在的值赋给变量
while(pAdapter->Description != strstatus)//进行匹配,找到对应的网卡
pAdapter = pAdapter->Next;

7、显示对应网卡信息
把选定网卡的各个信息在对应的Exit Control上显示

显示MAC地址时因为MAC地址以二进制保存,因此需要将二进制转换为16进制数,然后再转换为对应的字符存放起来

void Cnetcard_messageDlg::OnBnClickedOk()
{
    // TODO: 在此添加控件通知处理程序代码
    // TODO: 在此添加控件通知处理程序代码
    int nSel;
    CString cstr1;
    CString cstr2;
    CString cstr3;
    CString cstr4;
    CString cstr5;
    char temp[8] = "";
    int int_temp;
    PIP_ADAPTER_INFO pAdapter;  //*IP_ADAPTER_INFO
    pAdapter = pAdapterInfo;
    // 获取组合框控件的列表框中选中项的索引
    nSel = combo.GetCurSel();
    CString strstatus;      //定义一个字符串变量
    combo.GetLBText(nSel, strstatus);    //将当前光标所在的值赋给变量
    while(pAdapter->Description != strstatus)
        pAdapter = pAdapter->Next;
    cstr1 = pAdapter->AdapterName;              //网卡号
    for (i = 0; i < pAdapter->AddressLength; ++i) 
    {
        int_temp = (int)pAdapter->Address[i];
        _itoa_s(int_temp, temp, 4, 16);//int_temp表示的数以16进制转换到长度为4的字符数组temp中
        if (int_temp == 0)
                temp[0] = temp[1] = '0';//int_temp为0时需要显示 XX-00-XX
        cstr2 += temp;//将字符连接到完整字符串中
        if (i+1 < pAdapter->AddressLength)
            cstr2 += '-';
    }
    //(pAdapter->Address[i]).ToString();
    cstr3 = pAdapter->IpAddressList.IpAddress.String;   //IP
    cstr4 = pAdapter->IpAddressList.IpMask.String;      //子关掩码
    cstr5 = pAdapter->GatewayList.IpAddress.String;     //网关
    // 根据选中项索引获取该项字符串
    //combo.GetLBText(nSel, cstr);
    // 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中
    SetDlgItemText(IDC_EDIT1, cstr1);   //网卡名
    SetDlgItemText(IDC_EDIT2, cstr2);   //MAC地址
    SetDlgItemText(IDC_EDIT3, cstr3);   //IP地址
    SetDlgItemText(IDC_EDIT4, cstr4);   //子网掩码
    SetDlgItemText(IDC_EDIT5, cstr5);   //网关

    //getchar();
}

这里写图片描述

至此显示网卡信息的小程序完成了

完整功能展示

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值