ios开发显示wifi速率功能开发

-(NSString *)bytesToAvaiUnit:(int)bytes

{

    if(bytes < 1024)     // B

    {

        return [NSString stringWithFormat:@"%dB", 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)];

    }

}


/**

 *  监控网络流量数据

 */

-(void)checkNetworkflow{

    

    struct ifaddrs *ifa_list = 0;

    struct ifaddrs *ifa;

    

    //获取网络端口数据

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

        

        return;

    }

    

    uint32_t wifiIBytes = 0;

    uint32_t wifiOBytes = 0;

    uint32_t wifiFlow   = 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 (!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;//总流量

            

            wifiFlowValue = wifiFlow - wifiOldFlow;

            

            if (wifiFlowValue < 0) {

                

                wifiFlowValue = 0;

            }

            

            wifiOldFlow = wifiFlow;

            

            [self.wifiSpeedLabel setText:[self bytesToAvaiUnit:wifiFlowValue]];

        }

    }

    

    freeifaddrs(ifa_list);

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值