Chinaunix首页 | 论坛 | 博客
  • 博客访问: 358084
  • 博文数量: 284
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1707
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-14 16:38
文章分类

全部博文(284)

文章存档

2015年(6)

2014年(278)

我的朋友

分类: iOS平台

2014-06-26 20:56:24

通过读取系统网络接口信息,获取当前iphone设备的流量相关信息,统计的是上次开机至今的流量信息. 
1. [代码][C/C++]代码    
-(void)checkNetworkflow{
    struct ifaddrs *ifa_list = 0, *ifa;
    if (getifaddrs(&ifa_list) == -1)
    {
        return;
    }
    
    uint32_t iBytes     = 0;
    uint32_t oBytes     = 0;
    uint32_t allFlow    = 0; 
    uint32_t wifiIBytes = 0;
    uint32_t wifiOBytes = 0;
    uint32_t wifiFlow   = 0;
    uint32_t wwanIBytes = 0;
    uint32_t wwanOBytes = 0;
    uint32_t wwanFlow   = 0;
    struct timeval time ;
    
    for (ifa = ifa_list; ifa; ifa = ifa->ifa_next) 
    {
        if (AF_LINK != ifa->ifa_addr->sa_family)
            continue;
        
        if (!(ifa->ifa_flags & IFF_UP) && !(ifa->ifa_flags & IFF_RUNNING))
            continue;
        
        if (ifa->ifa_data == 0)
            continue;
        
        // Not a loopback device. 
        // network flow
        if (strncmp(ifa->ifa_name, "lo", 2)) 
        {
            struct if_data *if_data = (struct if_data *)ifa->ifa_data;
            
            iBytes += if_data->ifi_ibytes;
            oBytes += if_data->ifi_obytes;
            allFlow = iBytes + oBytes;
            time = if_data->ifi_lastchange;
        }
        
        //wifi flow
        if (!strcmp(ifa->ifa_name, "en0"))   
        {  
            struct if_data *if_data = (struct if_data *)ifa->ifa_data;  
            
            wifiIBytes += if_data->ifi_ibytes;  
            wifiOBytes += if_data->ifi_obytes; 
            wifiFlow    = wifiIBytes + wifiOBytes;
        }  
        
        //3G and gprs flow
        if (!strcmp(ifa->ifa_name, "pdp_ip0"))   
        {  
            struct if_data *if_data = (struct if_data *)ifa->ifa_data;  
            
            wwanIBytes += if_data->ifi_ibytes;  
            wwanOBytes += if_data->ifi_obytes;  
            wwanFlow    = wwanIBytes + wwanOBytes;
        }   
    }
    freeifaddrs(ifa_list);  
    changeTime.text     = [NSString stringWithFormat:@"%s",ctime(&time)];    
    receivedBytes.text  = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",iBytes]];
    sentBytes.text      = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",oBytes]];
    networkFlow.text    = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",allFlow]];
    wifiReceived.text   = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",wifiIBytes]];
    wifiSent.text       = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",wifiOBytes]];
    wifiBytes.text      = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",wifiFlow]];
    wwanReceived.text   = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",wwanIBytes]];
    wwanSent.text       = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",wwanOBytes]];
    wwanBytes.text      = [self bytesToAvaiUnit:[NSString stringWithFormat:@"%u",wwanFlow]];
}
阅读(747) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~