- 原理
(上一個時間節(jié)點的數(shù)據(jù) - 下一時間節(jié)點的數(shù)據(jù))/ 時間間隔 = 速率
- 獲取下行流量數(shù)據(jù)
- (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;
}
- 字節(jié)轉換
- (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";
};
}