设为首页 加入收藏

TOP

使用C++对物理网卡/虚拟网卡进行识别(包含内外网筛选)(三)
2019-08-30 06:15:47 】 浏览:136
Tags:使用 物理 网卡 虚拟 进行 识别 包含 外网 筛选
要以管理员权限运行程序<< void Output4(PIP_ADAPTER_INFO pIpAdapterInfo); //结果输出4(筛选内网网卡) //主函数 int main(void) { PIP_ADAPTER_INFO pIpAdapterInfo = (PIP_ADAPTER_INFO)malloc(sizeof(IP_ADAPTER_INFO)); unsigned long stSize = sizeof(IP_ADAPTER_INFO); int nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize); if (ERROR_BUFFER_OVERFLOW == nRel/*GetAdaptersInfo参数传递的内存空间不足*/) { //free(pIpAdapterInfo); pIpAdapterInfo = (PIP_ADAPTER_INFO)realloc(pIpAdapterInfo, stSize); nRel = GetAdaptersInfo(pIpAdapterInfo, &stSize); } if (ERROR_SUCCESS == nRel) { printf(">>>>>>>>> 正常结果 <<<<<<<<<<<\n\n"); Output1(pIpAdapterInfo); printf("\n\n>>>>>>>>> 删除虚拟网卡的结果 <<<<<<<<<\n\n"); Output2(pIpAdapterInfo); printf("\n\n>>>>>>>>> 去除非PCI物理网卡的结果 <<<<<<<<<\n\n"); Output3(pIpAdapterInfo); printf("\n\n>>>>>>>>> 筛选内网网卡的结果 <<<<<<<<<\n\n"); Output4(pIpAdapterInfo); } if (pIpAdapterInfo) { free(pIpAdapterInfo); } system("pause"); return 0; } //结果输出1(正常结果) void Output1(PIP_ADAPTER_INFO pIpAdapterInfo) { //可能有多网卡,因此通过循环去判断 while (pIpAdapterInfo) { //输出信息 cout << "网卡名称:" << pIpAdapterInfo->AdapterName << endl; cout << "网卡描述:" << pIpAdapterInfo->Description << endl; cout << "网卡MAC地址:" << pIpAdapterInfo->Address; for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++) { if (i == pIpAdapterInfo->AddressLength - 1) { printf("%02x\n", pIpAdapterInfo->Address[i]); } else { printf("%02x-", pIpAdapterInfo->Address[i]); } } cout << "网卡IP地址如下:" << endl; IP_ADDR_STRING *pIpAddrString = &(pIpAdapterInfo->IpAddressList); //可能网卡有多IP,因此通过循环去判断 do { cout << pIpAddrString->IpAddress.String << endl; pIpAddrString = pIpAddrString->Next; } while (pIpAddrString); pIpAdapterInfo = pIpAdapterInfo->Next; cout << "*****************************************************" << endl; } return; } //结果输出2(删除虚拟网卡的结果) void Output2(PIP_ADAPTER_INFO pIpAdapterInfo) { //可能有多网卡,因此通过循环去判断 while (pIpAdapterInfo) { //去除虚拟网卡IP if (IsVirtualNetCard(pIpAdapterInfo)) { pIpAdapterInfo = pIpAdapterInfo->Next; continue; } //输出信息 cout << "网卡名称:" << pIpAdapterInfo->AdapterName << endl; cout << "网卡描述:" << pIpAdapterInfo->Description << endl; cout << "网卡MAC地址:" << pIpAdapterInfo->Address; for (UINT i = 0; i < pIpAdapterInfo->AddressLength; i++) { if (i == pIpAdapterInfo->AddressLength - 1) { printf("%02x\n", pIpAdapterInfo->Address[i]); } else { printf("%02x-", pIpAdapterInfo->Address[i]); } } cout << "网卡IP地址如下:" << endl; IP_ADDR_STRING *pIpAddrString = &(pIpAdapterInfo->IpAddressList); //可能网卡有多IP,因此通过循环去判断 do { cout << pIpAddrString->IpAddress.String << endl
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇windows下查看端口被占用及处理 下一篇文件比较命令(comp)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目