本文提供利用SIO_GET_INTERFACE_LIST实现本地网关查询的简单工具代码。

#include <iostream>
#define WIN32_LEAN_AND_MEAN#include <windows.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>// Need to link with Ws2_32.lib
#pragma comment(lib, "ws2_32.lib")using namespace std;int doit()
{//创建套接字SOCKET sd = WSASocket(AF_INET, SOCK_DGRAM, 0, 0, 0, 0);if (sd == SOCKET_ERROR) {cerr << "Failed to get a socket. Error " << WSAGetLastError() <<endl; return 1;}//获取网关信息,保存在InterfancList中INTERFACE_INFO InterfaceList[20];unsigned long nBytesReturned;if (WSAIoctl(sd, SIO_GET_INTERFACE_LIST, 0, 0, &InterfaceList,sizeof(InterfaceList), &nBytesReturned, 0, 0) == SOCKET_ERROR) {cerr << "Failed calling WSAIoctl: error " << WSAGetLastError() <<endl;return 1;}//轮询读取信息并打印int nNumInterfaces = nBytesReturned / sizeof(INTERFACE_INFO);cout << "There are " << nNumInterfaces << " interfaces:" << endl;for (int i = 0; i < nNumInterfaces; ++i) {cout << endl;char sendBuf[20] = { '\0' };sockaddr_in *pAddress;pAddress = (sockaddr_in *)&(InterfaceList[i].iiAddress);cout << " " << inet_ntop(AF_INET, &pAddress->sin_addr, sendBuf, 16) << endl;pAddress = (sockaddr_in *)&(InterfaceList[i].iiBroadcastAddress);cout << " has bcast " << inet_ntop(AF_INET, &pAddress->sin_addr, sendBuf, 16) << endl;pAddress = (sockaddr_in *)&(InterfaceList[i].iiNetmask);cout << " and netmask " << inet_ntop(AF_INET, &pAddress->sin_addr, sendBuf, 16) << endl;cout << " Iface is ";u_long nFlags = InterfaceList[i].iiFlags;if (nFlags & IFF_UP) cout << "up";else                 cout << "down";if (nFlags & IFF_POINTTOPOINT) cout << ", is point-to-point";if (nFlags & IFF_LOOPBACK)     cout << ", is a loopback iface";cout << ", and can do: ";if (nFlags & IFF_BROADCAST) cout << "bcast ";if (nFlags & IFF_MULTICAST) cout << "multicast ";cout << endl;}return 0;
}int main()
{WSADATA WinsockData;if (WSAStartup(MAKEWORD(2, 2), &WinsockData) != 0) {cerr << "Failed to find Winsock 2.2!" << endl;return 2;}int nRetVal = doit();WSACleanup();return nRetVal;
}

C++利用SIO_GET_INTERFACE_LIST查询网关相关推荐

  1. 首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持

    首例利用智能路由网关犯罪嫌疑人被捕:罪名流量劫持 https://tech.sina.cn/digi/nb/2018-05-15/detail-ihapkuvm0295695.d.html 上海市徐汇 ...

  2. mysql子查询设置_什么是mysql子查询?如何利用子查询进行过滤?

    子查询 MySQL 4.1引入了对子查询的支持,所以要想使用本章描述的SQL,必须使用MySQL 4.1或更高级的版本. SELECT语句 是SQL的查询.迄今为止我们所看到的所有 SELECT 语句 ...

  3. mysql 利用时间查询_利用时间的艺术

    mysql 利用时间查询 Oh dear! If I had a dime every time (I just rhymed - twice!) someone, including me, com ...

  4. 同ip网站查询,同服务器网站查询,利用bing查询同一服务器IP下的所有网站 -

    利用bing查询同一服务器IP下的所有网站 - (2009-09-11 02:21:38) 标签: [标签sy_tag] 杂谈 如何利用bing必应搜索引擎查询同一服务器IP下驻扎的所有网站. 早晨在 ...

  5. 01_SQL注入_Mysql注入利用联合查询的手工注入

    01_SQL注入_Mysql注入:利用联合查询的手工注入 1.SQL注入的成因 [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! [严正声明]仅供学习,勿做他用!!! 遵纪守 ...

  6. MySQL学习003:利用ExecuteScalar查询

    SQL语法:https://www.w3school.com.cn/sql/sql_intro.asp 一.利用ExecuteScalar查询得到一个值的结果 static void ExcuteSc ...

  7. 数据库建立索引怎么利用索引查询

    数据库建立索引怎么利用索引查询? 精选 1.合理使用索引 索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率.现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构. 索引的使用要恰 ...

  8. 怎样利用SEO查询提升品牌知名度?

    作为一名网站管理员或SEO从业者,你肯定知道每个网站的排名对于流量和曝光率有着重要的影响.那么如何利用SEO查询,提升网站排名呢?今天,我将和大家分享一些我自己的经验和技巧. 1.了解网站关键词 在进 ...

  9. 鼎捷T100——利用自定义查询维护作业(azzi310)开发建立xg报表

    自定义查询维护作业(azzi310)制作报表 文章目录 前言 一.写sql 二.启用azzi310进行维护 1.新增作业 3.细节设计 三.通过azzi910维护作业 总结 前言 最近有个简易的查询报 ...

最新文章

  1. 二叉树中序遍历-递归与非递归
  2. python拼音怎么写-Python 中拼音库 PyPinyin 的用法
  3. 【Android 逆向】Android 进程代码注入原理 ( 进程注入原理 | 远程调用流程 | 获取函数地址 | 设置 IP 寄存器 | mmap 申请内存 | 设置 SP 寄存器 )
  4. 測试人员的核心能力与素养
  5. Android------Android.mk调用shell脚本
  6. c语言万年历的设计任务,万年历设计报告
  7. 是否可以在git中预览藏匿内容?
  8. (黑马教程)-webpack学习笔记
  9. 吴恩达机器学习作业 线性回归
  10. c语言windows窗口程序,C语言编写windows窗口程序
  11. 【支持向量机SVM系列教程3】支持向量回归SVR
  12. 【嗅探工具】无线WIFI密码破解
  13. 用original绘制重叠柱状图
  14. 安卓音频输出采样率_安卓里LDAC的采样率问题
  15. Python——Python Enhancement Proposal
  16. docker使用docker compose file部署项目时,实现容器卷挂载,并对容器内文件夹赋予权限
  17. 高并发核心技术Redis系列(九)--------本地操作
  18. AppleID加入苹果开发团队
  19. C语言实验——用*号输出字母C的图案
  20. 2006年主流建站系统及其典型网站演示(CMS篇)

热门文章

  1. Linux find 实战
  2. Linux ManJaro 换源、安装应用
  3. 2016 icpc沈阳部分题解
  4. 2012年5月编程语言排行榜:C再次位居第一 Java 占有率持续下降
  5. matplotlib——坐标负数显示问题Unicode minus
  6. SSL数字证书之CA根证书、CA中间证书和SSL证书
  7. 测试用例等级怎么划分?别再傻傻的一脸懵逼
  8. OpenGL渲染管线之简单示例(五)
  9. Arduino实验十 利用土壤湿度传感器检测西瓜皮湿度
  10. thinksns+ 安装,处理安装过程中报错