- -(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);
- }
- //--------------------------------------------
- #include <arpa inet.h="">
- #include <net if.h="">
- #include <ifaddrs.h>
- #include <net if_dl.h="">
- + (NSArray *)getDataCounters
- {
- BOOL success;
- struct ifaddrs *addrs;
- const struct ifaddrs *cursor;
- const struct if_data *networkStatisc;
- int WiFiSent = 0;
- int WiFiReceived = 0;
- int WWANSent = 0;
- int WWANReceived = 0;
- NSString *name=[[[NSString alloc]init]autorelease];
- success = getifaddrs(&addrs;) == 0;
- if (success)
- {
- cursor = addrs;
- while (cursor != NULL)
- {
- name=[NSString stringWithFormat:@"%s",cursor->ifa_name];
- NSLog(@"ifa_name %s == %@\\n", cursor->ifa_name,name);
- // names of interfaces: en0 is WiFi ,pdp_ip0 is WWAN
- if (cursor->ifa_addr->sa_family == AF_LINK)
- {
- if ([name hasPrefix:@"en"])
- {
- networkStatisc = (const struct if_data *) cursor->ifa_data;
- WiFiSent+=networkStatisc->ifi_obytes;
- WiFiReceived+=networkStatisc->ifi_ibytes;
- NSLog(@"WiFiSent %d ==%d",WiFiSent,networkStatisc->ifi_obytes);
- NSLog(@"WiFiReceived %d ==%d",WiFiReceived,networkStatisc->ifi_ibytes);
- }
- if ([name hasPrefix:@"pdp_ip"])
- {
- networkStatisc = (const struct if_data *) cursor->ifa_data;
- WWANSent+=networkStatisc->ifi_obytes;
- WWANReceived+=networkStatisc->ifi_ibytes;
- NSLog(@"WWANSent %d ==%d",WWANSent,networkStatisc->ifi_obytes);
- NSLog(@"WWANReceived %d ==%d",WWANReceived,networkStatisc->ifi_ibytes);
- }
- }
- cursor = cursor->ifa_next;
- }
- freeifaddrs(addrs);
- }
- return [NSArray arrayWithObjects:[NSNumber numberWithInt:WiFiSent],
- [NSNumber numberWithInt:WiFiReceived],
- [NSNumber numberWithInt:WWANSent],
- [NSNumber numberWithInt:WWANReceived], nil];
- }</net></ifaddrs.h></net></arpa>
- //该片段来自于http://www.codesnippet.cn/detail/181220138118.html
来源: http://www.codesnippet.cn/detail/181220138118.html