• iOS 获取流量


    #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];
        
        success = getifaddrs(&addrs) == 0;
        if (success)
        {
            cursor = addrs;
            while (cursor != NULL)
            {
                name=[NSString stringWithFormat:@"%s",cursor->ifa_name];
                NSLog(@"ifa_name %s == %@
    ", 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];
    }
  • 相关阅读:
    Linux shell 中$() ` `,${},$[] $(()),[ ] (( )) [[ ]]作用与区别
    bootstrap navbar items alignment
    bootstrap使用前注意点和盒子模型
    css 资料链接
    serial minicom
    摄像机distortion vector、project matrix、camera matrix
    ros nodelet 使用
    covariance matrix 和数据分布情况估计
    MessagePack简析
    容量规划
  • 原文地址:https://www.cnblogs.com/qingjoin/p/3167625.html
Copyright © 2020-2023  润新知