ios 网速监控_IOS实时监控上传下载速度
在开发中要获取网络类型是很简单的,导入Reachability直接获取状态就行了,现在我们要做一个类似下载器的那种实时把上传下载速度显示出来。
需要用到的头文件
使用Reachability
要测速度所以必须要有一个定时器,咱们为了不耗用户的流量,取的是数据的总量,然后减去上一次的检测的总量,得出的就是速度。网络现在分为wifi以及wwan两种类型。
首先头文件.h建立一个检测的数据类
@interface MonitorData : NSObject
@property (assign, nonatomic) float wwanSend;
@property (assign, nonatomic) float wwanReceived;
@property (assign, nonatomic) float wifiSend;
@property (assign, nonatomic) float wifiReceived;
@end
然后建立一个检测类
@interface MonitorFlow : NSObject
//开始检测
- (void)startMonitor;
//停止检测
- (void)stopMonitor;
@end
实现文件.M
//成员变量是内部可见的
@interface MonitorFlow ()
@property (strong,nonatomic) NSTimer *timer;
@property (assign, nonatomic) float tempWWANReceived;
@property (assign, nonatomic) float tempWWANSend;
@property (assign, nonatomic) float tempWifiReceived;
@property (assign, nonatomic) float tempWifiSend;
@end
直接把代码附上,里面有注释
@implementation MonitorFlow
- (void)startMonitor {
[self currentFlow];
self.timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(refreshFlow) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
- (void)stopMonitor{
[self.timer invalidate];
}
- (void)refreshFlow{
// 上传、下载
//不需要连通网络获取的是总的数据
Reachability *reachability = [Reachability reachabilityWithHostName:@"Yes-Cui"];
MonitorData *monitor = [self getMonitorDataDetail];
switch (reachability.currentReachabilityStatus) {
case ReachableViaWiFi:
{
float wifiSend = monitor.wifiSend - self.tempWifiSend;
float wifiReceived = monitor.wifiReceived - self.tempWifiReceived;
NSLog(@"wifi上传速度:%@",[NSString stringWithFormat:@"%.0f KB/s",wifiSend]);
NSLog(@"wifi下载速度:%@",[NSString stringWithFormat:@"%.0f KB/s",wifiReceived]);
}
break;
case ReachableViaWWAN:
{
float wwanSend = monitor.wwanSend - self.tempWWANReceived;
float wwanReceived = monitor.wifiReceived - self.tempWWANSend;
NSLog(@"wwan上传速度:%@",[NSString stringWithFormat:@"%.0f KB/s",wwanSend]);
NSLog(@"wwan下载速度:%@",[NSString stringWithFormat:@"%.0f KB/s",wwanReceived]);
}
break;
default:
{
NSLog(@"无网络");
}
break;
}
[self currentFlow];
}
//赋值当前流量
- (void)currentFlow{
MonitorData *monitor = [self getMonitorDataDetail];
self.tempWifiSend = monitor.wifiSend;
self.tempWifiReceived = monitor.wifiReceived;
self.tempWWANSend = monitor.wwanSend;
self.tempWWANReceived = monitor.wwanReceived;
}
//上传、下载总额流量
- (MonitorData *)getMonitorDataDetail
{
BOOL success;
struct ifaddrs *addrs;
struct ifaddrs *cursor;
struct if_data *networkStatisc;
long tempWiFiSend = 0;
long tempWiFiReceived = 0;
long tempWWANSend = 0;
long tempWWANReceived = 0;
NSString *dataName;
success = getifaddrs(&addrs) == 0;
if (success)
{
cursor = addrs;
while (cursor != NULL)
{
dataName = [NSString stringWithFormat:@"%s",cursor->ifa_name];
if (cursor->ifa_addr->sa_family == AF_LINK)
{
if ([dataName hasPrefix:@"en"])
{
networkStatisc = (struct if_data *) cursor->ifa_data;
tempWiFiSend += networkStatisc->ifi_obytes;
tempWiFiReceived += networkStatisc->ifi_ibytes;
}
if ([dataName hasPrefix:@"pdp_ip"])
{
networkStatisc = (struct if_data *) cursor->ifa_data;
tempWWANSend += networkStatisc->ifi_obytes;
tempWWANReceived += networkStatisc->ifi_ibytes;
}
}
cursor = cursor->ifa_next;
}
freeifaddrs(addrs);
}
MonitorData *monitorData = [MonitorData new];
monitorData.wifiSend = tempWiFiSend/1024;
monitorData.wifiReceived = tempWiFiReceived/1024;
monitorData.wwanSend = tempWWANSend/1024;
monitorData.wwanReceived = tempWWANReceived/1024;
return monitorData;
}
@end
粘贴的格式错乱了自己排序一下,哈哈希望对大家有帮助。
网盘是有代码,要的拿走:
https://pan.baidu.com/s/1c1Xq5Ao
如需转载标明出处
各位看官觉得有用的话就请Yes-Cui喝瓶水吧,打赏一个
ios 网速监控_IOS实时监控上传下载速度相关推荐
- 电脑上传网速怎么测试软件,宽带上传速度怎么测试 教你如何看电脑宽带上传速度...
网速一般分为下载速度和上传速度,一般我们测算网速只是测试下载速度,只要电脑从网上下载速度快,用户通常比较满意.但你知道吗?上传速度也是值得关注的,尤其是在云网络时代,很多朋友都要传文件到网盘或者视频网 ...
- ios 自动打包命令_iOS自动打包上传脚本
自从将swift2.2升级到swift3.0, 每次使用Xcode8编译都很慢,很是不爽,于是有了研究下xcodebuild命令行打包的想法,起初不知道用shell,还是用python, 在网上大概搜 ...
- 实时网速监测app_实时网速安卓下载_实时网速监测安卓app下载-XP软件园
详情介绍 实时网速安卓是一款简单实用的手机网速监测工具,自身的体积只有2m大小,对手机运行的网速数字显示最新网速,掌握目前手机网速情况,需要就来下载实时网速安卓吧. 实时网速安卓介绍 实时网速监测安卓 ...
- 智能监控系统、人脸识别、智能抓拍、预警系统、机动车辆抓拍、行人抓拍、监控预警管理后台、人流监控、人脸信息采集、语音报警、轨迹分析、抓拍检索、园区监控、实时监控、录像回放、防盗预警、智能算法、跟踪分析
智能监控系统.人脸识别.智能抓拍.预警系统.机动车辆抓拍.行人抓拍.监控预警管理后台.人流监控.人脸信息采集.语音报警.轨迹分析.抓拍检索.园区监控.实时监控.录像回放.防盗预警.智能算法.跟踪分析. ...
- ABB机器人socket通讯实时位置上传,中断触发
一.中断.多线程.多任务 中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作.在运行一个程序的过程中,断续地以"插入"方式执行一些完成特定处理功能的程序段. 硬件多线程是 ...
- Unity iOS 之 [iOS]App上架流程[利用Archive进行上传]
[iOS]App上架流程[利用Archive进行上传] 准备: 1. 一个开发者账号(需要交过钱的,?好黑) 2. 一个做完的项目 检查: 1. 你的Xcode必须是正式版,不可以是beta版本(不能 ...
- H5调用手机摄像头,实时拍照上传(旧)
H5调用手机摄像头,完成拍照,实时上传(旧) 项目开发中,偶尔会遇到网页中调用手机摄像头,通过相册选择或直接实时拍照的方式,完成图片上传的功能型需求. 今天,就通过一个小的案例,演示一下完整的实现流程 ...
- JS调用摄像头、实时视频流上传(一次不成功的试验)
JS调用摄像头.实时视频流上传(一次不成功的试验) 思路 前端调用摄像头,获取视频流,从视频流中取一帧转图片,用websocket上传图片. 研究了一下发现了WebRTC这种技术,看到有博客说一些直播 ...
- 网安基础学习之“文件上传漏洞原理与实现”
网安基础学习之"文件上传漏洞原理与实现" 近期新闻头条上报出了"长沙市场监管局网站被上传了黄色页面",经过长沙市公安局网技支队的排查,该门户网站后台编辑器存在* ...
最新文章
- 【ACM】杭电OJ 2063
- AAAI 2021 | 时间序列相关论文汇总
- 一起学nRF51xx 10 - rng
- 2020年高等数学方法与提高(上海理工大学)学习笔记:常微分方程
- WinForm给ComboBox增加Value(转)
- 统计信息自动收集任务失效原因排查
- 亚马逊消费者业务宣布永久关闭 Oracle 数据库,去O新进展;华为发布最新5G全系列解决方案;苹果正研究新设备“智能戒指”……...
- 【华为云技术分享】LiteOS无法直接烧录或者烧录失败解决方法--ST-Link
- 算法导论6:排序小结和最值取法 2016.1.6
- python __name__怎么使用_python学习笔记26(python中__name__的使用)
- Linux文件内容查阅
- 人工智能再次参加高考:和作家比写作文,AI能打多少分?
- JavaScript基础流程控制(3)
- java命令行参数是什么_Java实验课:命令行参数是什么?
- Windows Server 2008 R2将tomcat添加进系统服务
- Linux中使用sed命令替换字符串
- 基于token的多平台身份认证架构设计
- linux下的文件系统,Linux系统中常见的文件系统有哪些?
- 【笔记】【一文解决】linux - grep、sed、awk 『三剑客』
- 【元宵节】中国人民大学与加拿大女王大学金融硕士项目与你的那份“缘”
热门文章
- 将oracle中的逗号转成全角,ORACLE SQL半角全角转换
- PowerPoint绘图笔不能用
- 《飞猪规则》 第八章 国外景点门票类商品发布规范
- suse 调整分区_【suse】挂载硬盘,磁盘分区方法
- 关于写“好“代码的一些思路
- 手机短视频伪原创 视频消重和改md5
- ios 制作手机端拼图游戏及衍生的其他内容
- Aspose.PSD for .NET 22.11.0 Crack
- 用VB代码把4位数字转化为汉字数字
- 自定义圆形进度条跟随logo及数字进度