路由表interface 里面的不是ip格式数字代表什么

来源:百度知道 编辑:UC知道 时间:2024/09/25 20:00:56
0.0.0.0 0.0.0.0 113.250.154.99 113.250.154.99 1
0.0.0.0 0.0.0.0 172.18.108.1 172.18.109.237 26
113.250.152.1 255.255.255.255 113.250.154.99 113.250.154.99 1
113.250.154.99 255.255.255.255 127.0.0.1 127.0.0.1 50
113.255.255.255 255.255.255.255 113.250.154.99 113.250.154.99 50
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
172.0.0.0 255.0.0.0 172.18.108.1 172.18.109.237 1
172.18.108.0 255.255.252.0 172.18.109.237 172.18.109.237 25
172.18.109.237 255.255.255.255 127.0.0.1 127.0.0.1 25
172.18.255.255 255.255.255.255 172.18.109.237 172.18.109.237 25
202.202.43.0 255.255.255.0 172.18.108.1 172.18.109.237 1
224.0.0.0 240.0.0.0 172.18.109.237 172.18.109.237 25
224.0.0.0 240.0.0.0 113.25

提取网络接口信息

其中最主要的两个函数是GetNumberOfInterfaces和GetInterfaceInfo,前者指出网络接口的个数,后者提取网络接口的信息。对于第一个函数要说明的一点是它好象并没有返回正确的值,因为据MSDN描述:一个网络接口是网卡的逻辑抽象,它们是一对一的关系。而实际情况是我的机器上只有一张网卡,这个函数却返回了2。实际上,因为每个系统都附加有一个调试用的网络接口,这个接口的IP地址是127.0.0.1子网掩码是255.0.0.0。这个结果可以从程序的输出看出来。由GetInterfaceInfo返回的IP_INTERFACE_INFO结构中也有一个NumAdapters整型的数据域记录了正确的网卡。然后对于GetInterfaceInfo要注意的是它也必须被调用两次,第一次获取缓冲大小,第二次才是取值。然后再次让我感到其怪的是GetInterfaceInfo返回的IP_INTERFACE_INFO不象上面的结构是用链表,而是用的动态数组的方法(到现在什么线性结构都用上了),所以遍历其中每一个元素的代码变成:

for(int i=0;iNumAdapters;i++)
{
cout<<"Adapter index:"<Adapter[i].Index<Adapter[i].Name<
IP_INTERFACE_INFO结构的解释如下:

typedef struct _IP_INTERFACE_INFO {
LONG NumAdapters;
// 动态数组中网络接口元素的个数,通过它来遍历数
//组
IP_ADAPTER_INDEX_MAP Adapter[1];
// 网络接口数据数组
} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO;