我想监测本地网络流量,好像“本地连接”显示的发送、接收一样。还要知道该连接的IP。100分求助。

解决方案 »

  1.   

    呵呵,什么都不说,参考这一个CodeProject例子,文章带源代码。多好…… 
    http://www.codeproject.com/KB/IP/winnetstat.aspx
      

  2.   

    顺便还找到一个:
    http://www.codeproject.com/KB/IP/trafficwatcher.aspx
      

  3.   

    网上帮你粘贴一段
    用GetIfEntry获得指向网卡接口结构的指针,然后读取里面的dwInOctects(流入)和dwOutOctects(流出)变量。   
     DWORD GetIfEntry
     (   
        PMIB_IFROW pIfRow   //接口指针入境
     )  
        
     typedef struct _MIB_IFROW   {   
          WCHAR       wszName[MAX_INTERFACE_NAME_LEN];   
          DWORD       dwIndex;         //  指数的界面
          DWORD       dwType;           // 接口类型   
          DWORD       dwMtu;             //   最大传输单位
          DWORD       dwSpeed;         //   高速接口
          DWORD       dwPhysAddrLen;         //   物理地址长度
          BYTE         bPhysAddr[MAXLEN_PHYSADDR];   // 物理地址的适配器   
          DWORD       dwAdminStatus;         //   行政地位
          DWORD       dwOperStatus;           //   运行状态
          DWORD       dwLastChange;           //   最后一次战备状态改变
          DWORD       dwInOctets;               //   收到字节
          DWORD       dwInUcastPkts;         //   收到的单播数据包
          DWORD       dwInNUcastPkts;       //   非单播数据包收到     
          DWORD       dwInDiscards;           //   收到的数据包丢弃
          DWORD       dwInErrors;               //   收到错误的数据包
          DWORD       dwInUnknownProtos;     //   未知协议包收到     
          DWORD       dwOutOctets;             //   发送字节
          DWORD       dwOutUcastPkts;       //   单播数据包发送
          DWORD       dwOutNUcastPkts;     //   非单播数据包发送
          DWORD       dwOutDiscards;         //   即将离任的包丢弃
          DWORD       dwOutErrors;             //   错误的数据包发送
          DWORD       dwOutQLen;                 //   输出队列长度
          DWORD       dwDescrLen;               //   长度bDescr成员
          BYTE        bDescr[MAXLEN_IFDESCR];     // 接口描述
      }           
    MIB_IFTABLE*  ifTable = new MIB_IFTABLE[];  
      MIB_IFROW   ifMib;  //   获取接口的各种信息 
        
      DWORD   dwSize   = sizeof(MIB_IFTABLE);   
      GetIfTable(ifTable,     &dwSize,   TRUE);                 //   得到接口列表   
      ifMib.dwIndex = ifTable->table[0].dwIndex;   //   设定index,此处取第一块网卡   
      GetIfEntry(&ifMib);