- 原理
(上一个时间节点的数据 - 下一时间节点的数据)/ 时间间隔 = 速率
- 获取下行流量数据
- (long long)getInterfaceBytes {
struct ifaddrs* addrs;
const struct ifaddrs* cursor;
long long currentBytesValue = 0;
if (getifaddrs(&addrs) == 0) {
cursor = addrs;
while (cursor != NULL) {
const struct if_data* ifa_data = (struct if_data*)cursor->ifa_data;
if (ifa_data) {
// total number of octets received
int receivedData = ifa_data->ifi_ibytes;
currentBytesValue += receivedData;
}
cursor = cursor->ifa_next;
}
}
freeifaddrs(addrs);
return currentBytesValue;
}
- 字节转换
- (NSString *)formatNetWork:(long long int)rate {
if (rate <1024) {
return [NSString stringWithFormat:@"%lldB/S", rate];
} else if (rate >=1024&& rate <1024*1024) {
return [NSString stringWithFormat:@"%.1fKB/S", (double)rate /1024];
} else if (rate >=1024*1024&& rate <1024*1024*1024) {
return [NSString stringWithFormat:@"%.2fMB/S", (double)rate / (1024*1024)];
} else {
return@"0Kb/S";
};
}