iOS开发——实时监控网速(仅作参考,发现一点问题)

摘要:
在开发中有两种获取网络速度的方法:1.下载速度,可以在接收数据的地方直接计算。2.要获取移动网卡的数据,您可以监视网卡的传入和传出流量,如下所示#import“ViewController.h”#include#include#包含 @interfaceViewController()@end@implementationViewController-viewDidLoad{[superviewDidLoad];NSTimer*timer=[NSTimersheduledTimerWithTimeInterval:1.0target:selfselector:@selectoruserInfo:nilrepeats:YES];[timerfireDate];}-getInternetface{longlonghehe=[self-getInterfaceBytes];NSLog;}/*获取网络流量信息*/-getInterfaceBytes{structifaddrs*ifa_list=0,*ifa;if{return0;}uint32_tiBytes=0;uint32_toBytes=0;对于{if(AF_LINK!

  开发中用到获取网速的地方,应该就两种:

  1、下载速度,这种可以直接在接受数据的地方统计计算。这个就不讲了。
  2、获取手机网卡的数据,可以监控网卡的进出流量,下面就是。

#import "ViewController.h"

#include <ifaddrs.h>

#include <arpa/inet.h>

#include <net/if.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

        

    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(getInternetface) userInfo:nil repeats:YES];

    [timer fireDate];

}

- (void)getInternetface {

    long long hehe = [self getInterfaceBytes];

    

    NSLog(@"hehe:%lld",hehe);

}

/*获取网络流量信息*/

- (long long) getInterfaceBytes

{

    struct ifaddrs *ifa_list = 0, *ifa;

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

    {

        return 0;

    }

    

    uint32_t iBytes = 0;

    uint32_t oBytes = 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;

        

        /* Not a loopback device. */

        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;

        }

    }

    freeifaddrs(ifa_list);

    

    NSLog(@" [getInterfaceBytes-Total]%d,%d",iBytes,oBytes);

    return iBytes + oBytes;

}

@end

免责声明:文章转载自《iOS开发——实时监控网速(仅作参考,发现一点问题)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇为Tcl编写C的扩展库(原创)如何去掉Protel99se汉化菜单下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发网络数据之AFNetworking使用

http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库。最新版本支持session,xctool单元测试。网络获取数据一直是手机软件的重中之重,如果处理的不好,会造成很差的用户体验。随着ASIHTTPRequest的停止更新,更换网络库是必然的事情,AFNetworking...

iOS开发UI篇—iOS开发中Xcode的一些使用技巧

一、快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文件 视图 option + cmd + 回车 打开助理编辑器 cmd + 回车 显示主窗口 cmd +0 导航窗口 option + cmd +0 工具窗口 在.m & .h之间切换 control + cmd + 上/下 按照浏览文件的...

虚拟机IOS开发环境搭建教程

来源:http://www.cnblogs.com/xiaoyaoju/archive/2013/05/21/3091171.html 安装条件: 硬件:一台拥有支持虚拟技术的64位双核处理器和2GB以上内存的PC。 注意:运行MAC OS,需要电脑支持虚拟技术(VT),安装时,需要将VT启动,在BIOS中开启。 关于如何检测你的电脑支持VT,可以去下面这...

基于React Native的58 APP开发实践

React Native在iOS界早就炒的火热了,随着2015年底Android端推出后,一套代码能运行于双平台上,真正拥有了Hybrid框架的所有优势。再加上Native的优秀性能,让越来越多的公司在实际项目中一探究竟。58同城APP发布模块年代久远,一直计划进行重构以适应日益苛刻的用户体验,这个需求与我们在React Native上一探究竟的意愿一碰撞...

IOS开发之__bridge,__bridge_transfer和__bridge_retained (转)

Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunL...

iOS开发之关闭暗黑模式

对于现在很多应用不想适配暗黑模式或者来不及适配的,可以关闭暗黑模式。 全局关闭暗黑模式:在 Info.plist 文件中,添加 key 为 User Interface Style,类型为 String,value 设置为 Light 即可。 单页面关闭暗黑模式: 单个页面或视图关闭暗黑模式,设置 overrideUserInterfaceStyle 为...