有个IP HE??什么的东东,里面有API接口的.不过我不会写.应该怎么写?
用DOS命令输出后进行拦截可以得到路由表信息,不过信息量比较小的时候可以,但信息量比较多(比如有30条以上路由记录)的时候,很容易死程序,很久才反应过来.
求可用的VB API得到路由表等网络信息.

解决方案 »

  1.   

    你是不是想要用GetInterfaceInfo这个函数??
      

  2.   

    提取网络接口信息
     
     
    其中最主要的两个函数是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;其中的IP_ADAPTER_INDEX_MAP结构如下:
    typedef struct _IP_ADAPTER_INDEX_MAP {
      ULONG Index;                     
    // 网卡索引
      WCHAR Name[MAX_ADAPTER_NAME];    
    // 网卡名
    } IP_ADAPTER_INDEX_MAP, * PIP_ADAPTER_INDEX_MAP;提取IP信息
    这部分显然和提取网络接口信息部分是相同的。设置本地网络
    设置的过程与提取过程其实是换汤不换药。我不想在这里演示每一个函数的用法,所以只使用了一个(我认为)最常用的函数AddIPAddress。这个函数能够设置本地网络的IP。但不幸的是,这个IP是临时的,当系统重新启动或者发生其它的PNP事件的时候这个IP就不存在了。那么有人会问这有什么用呢?实际上,每个网络接口卡都可以绑定多个IP,所以在网络环境恶劣的情况下(如校园网)同时预备多个IP以防断线是有必要的。必须指出的是这种临时的IP在网络通讯时可能导致的问题现在还没有测试过,诸如CODEGURU,CSDN,MSDN,或者TECHREPUBLIC对这套API也没有详细的解释(虽然它很有用)。其它的API函数
    这些函数能够让你察看或者设置网络数据报文方面的信息。比方GetIpStatistics、GetIcmpStatistics函数能够让你查看当前IP数据报和ICMP数据报的流量,以及废弃的数据报数量等等。使用这些函数你可以构建自己的网络监控程序检察网络中的故障。你也可以使用SetIpStatistics 函数来设置相应的IP协议栈属性,缩短或者延长IP数据报的缺省TTL值。然后你也可以使用GetIpForwardTable、CreateIpForwardEntry 、DeleteIpForwardEntry、SetIpForwardEntry来分别获取IP路由表的信息,创建路由表项,删除路由表项和修改路由表项。也可以用GetBestRoute、 GetBestInterface获得到达指定IP的最好的路由点和网络接口。事实上,通过这些函数我们可以得到许多MIB变量(《使用TCP/IP协议实现网际互联》第二卷),通过这些MIB变量,我们可以非常快速的制作一个网络管理软件。 未涉及的部分
    我们没有涉及IP Helper API中SendARP函数的使用。实际上,这个函数是我使用这套API的主要原因,它能够简单的发送ARP数据包并返回目标机器的MAC地址。我使用这个函数制作了另一个简单的IP查看程序,它能够查看局域网上哪些IP正在使用,并能够显示它们的MAC地址。如果把这些信息记录在文件中,我就可以统计出一天中哪些家伙的上网时间最长以及其上网的习性并能够知道哪些人更换了他们的网卡,也可以分析出这个网络的使用情况(我在学校的高峰时段统计出一个网段的254个IP中竟有236个正在使用,可见增加网段的必要了)。我将在后面的文章中说明这个程序的制作。我们也没有涉及这套API提供的当网络设置改变时向应用程序发出消息的异步通知功能。因为它们非常简单,与WINSOCK中WSAAsyncSelect的使用方法是一样的,就不再说明了。
      

  3.   

    5.5.5这个是C++的.找到过的.不懂如何转成VB
      

  4.   

    IP_INTERFACE_INFO结构这个你有没有???