IOS流量统计

2017-02-22  本文已影响957人  严木木

最近做视频遇到了一个需求就是将流量放在视频上方展示  


于是2开始各种百度最后终于解决直接上代码吧

#include. 

#include

#include

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(getInternetface) userInfo:nil repeats:YES];

[timer fireDate];

- (void)getInternetface {

long newBytes = [self getGprsWifiFlowIOBytes];

if ( _oldBytes > 0) {

_totalBytes = _totalBytes + newBytes - _oldBytes;

_traffic.text = [NSString stringWithFormat:@"流量:%@ ,码率%@/s",[self zhuanHuan:_totalBytes],[self zhuanHuan:newBytes - _oldBytes]];

}

_oldBytes = newBytes;

}

/*获取网络流量信息*/

-(long long )getGprsWifiFlowIOBytes{

struct ifaddrs *ifa_list = 0, *ifa;

if (getifaddrs(&ifa_list) == -1) {

return 0;

}

uint64_t iBytes = 0;

uint64_t oBytes = 0;

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;

//Wifi

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;

//          NSLog(@"%s :iBytes is %d, oBytes is %d", ifa->ifa_name, iBytes, oBytes);

}

//3G或者GPRS

if (!strcmp(ifa->ifa_name, "pdp_ip0")){

struct if_data *if_data = (struct if_data *)ifa->ifa_data;

iBytes += if_data->ifi_ibytes;

oBytes += if_data->ifi_obytes;

//            NSLog(@"%s :iBytes is %d, oBytes is %d",ifa->ifa_name, iBytes, oBytes);

}

}

freeifaddrs(ifa_list);

uint64_t bytes = 0;

bytes = iBytes + oBytes;

//    NSLog(@"返回 ==== %llu ",bytes);

return bytes;

}

//将bytes单位转换

-(NSString *)zhuanHuan:(long)bytes{

if(bytes < 1024){ // B

return [NSString stringWithFormat:@"%ldB", bytes];

}else if(bytes >= 1024 && bytes < 1024 * 1024){// KB

return [NSString stringWithFormat:@"%.1fKB", (double)bytes / 1024];

}else if(bytes >= 1024 * 1024 && bytes < 1024 * 1024 * 1024){// MB

return [NSString stringWithFormat:@"%.2fMB", (double)bytes / (1024 * 1024)];

}else{ // GB

return [NSString stringWithFormat:@"%.3fGB", (double)bytes / (1024 * 1024 * 1024)];

}

}



上一篇下一篇

猜你喜欢

热点阅读