计算机网络课程设计,使用MFC实现界面化创建ARP发送与接受程序(四)

计算机网络课程设计,使用MFC实现界面化创建ARP发送与接受程序(四)

ARP发送程序相关函数设计及API调用:

  1. 界面初始化函数:

使用WINPCAP API获取本地适配器信息并传给界面的下拉框

//这里仅仅显示MFC对话框中界面初始化添加额外初始化代码的部分
	CString str;
	if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &alldevs, errbuf) == -1)
	{
   
		str.Format("Error in pcap_findalldevs_ex: %s\n", errbuf);//将错误信息写入字符串中
		m_com.AddString(str);	//m_com是ComboBox的一个变量,变量类型为CComboBox
		exit(1);
	}

	/* 打印列表 */
	for (d = alldevs; d != NULL; d = d->next)
	{
   
		str.Format("%s", d->name);	//将设备名称写入字符串中
		m_com.AddString(str);		//将字符串传入combobox进行显示并选择
	}

	m_com.SetCurSel(0); //默认选择第一项
	

运行结果如图:
在这里插入图片描述
由于使用WINPCAP获取的设备信息并不能让我们一眼知道我们想使用的适配器,在后面选择适配器发送时,可以逐一尝试。

利用WIN32 API中的 IP Helper给出的方法更直观的显示网卡的信息


	PIP_ADAPTER_INFO pAdapter = 0;//这个在xxxdlg.cpp文件中最好定义为全局变量以供后面使用
	DWORD opinf;	//同上
	
	opinf = GetAdaptersInfo(pAdapter, &uBuf);
	if (opinf == ERROR_BUFFER_OVERFLOW)
	{
   
		pAdapter = (PIP_ADAPTER_INFO)GlobalAlloc(GPTR, uBuf);//获取本地所有适配器并赋值
		pAdapterInf = pAdapter;	//将适配器信息赋值,防止接下来出现错误
		opinf = GetAdaptersInfo(pAdapter, &uBuf);//获取本地网络信息,并赋值返回值
		if (opinf == ERROR_SUCCESS) 
		{
   
			while (pAdapterInf)//当适配器信息不空
			{
   
				dev_inf.AddString(pAdapterInf->Description);	//添加适配器信息至ComboBox中
				pAdapterInf = pAdapterInf->Next;	//继续下一个适配器
			}
		}
	}

运行结果:
在这里插入图片描述
这里我们发现,适配器的名字更容易让我们理解,例如我的笔记本的网卡是Intel Wireless-AC 8265这款,那么后面我们就可以选择它作为发送的设备来发送ARP

这里我参考了CSDN上面的这篇文章:“MFC界面编程: 为 Arp协议获得本地局域网内在线主机MAC地址的程序 编写 界面
如果你无法理解IP He

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值