检測网络连接状态

#import "AFNetworkReachabilityManager.h"

- (BOOL)isNetWorkReachable{

__block CGRect rect = _nonNetworkLabel.frame; //这里的声明前面加__block。作用是在块里能够改动rect的值;

AFNetworkReachabilityManager *afNetworkReachabilityManager = [AFNetworkReachabilityManager sharedManager];

[afNetworkReachabilityManager startMonitoring];  //开启网络监视器;

[afNetworkReachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status)
{

switch (status) {

case AFNetworkReachabilityStatusNotReachable:{

NSLog(@"网络不通:%f",
rect.origin.y );

_nonNetworkLabel.hidden = NO;

_nonNetworkLabel.text = @"网络不通..";

[self performSelector:@selector(hidden) withObject:nil afterDelay:3];

break;

}

case AFNetworkReachabilityStatusReachableViaWiFi:{

NSLog(@"网络通过WIFI连接:%f",
rect.origin.y );

_nonNetworkLabel.hidden = NO;

_nonNetworkLabel.text = @"网络通过WIFI连接..";

[self performSelector:@selector(hidden) withObject:nil afterDelay:3];

break;

}

case AFNetworkReachabilityStatusReachableViaWWAN:{

NSLog(@"网络通过流量连接:%f",
rect.origin.y );

_nonNetworkLabel.hidden = NO;

_nonNetworkLabel.text = @"网络通过流量连接..";

[self performSelector:@selector(hidden) withObject:nil afterDelay:3];

break;

}

default:

break;

}

}];

return [AFNetworkReachabilityManager sharedManager].isReachable;

}

- (void)hidden

{

_nonNetworkLabel.hidden = YES;

}

- (void)viewDidLoad

{

[super viewDidLoad];

if ([[[UIDevice currentDevice]systemVersion]floatValue]>=7.0)
{

self.tabBar.translucent = NO;

}

else if ([[[UIDevice currentDevice]systemVersion]floatValue]
< 7.0){

}

//self.view.backgroundColor = [UIColor redColor];

//默认选择第几个

self.selectedIndex = 0;

self.nonNetworkLabel = [[UILabel alloc]initWithFrame:CGRectMake(80, self.view.frame.size.height - 70, 160, 20)];

_nonNetworkLabel.backgroundColor = [UIColor blackColor];

_nonNetworkLabel.alpha = 0.6;

_nonNetworkLabel.textColor = [UIColor whiteColor];

_nonNetworkLabel.textAlignment = NSTextAlignmentCenter;

_nonNetworkLabel.font = [UIFont systemFontOfSize:12];

_nonNetworkLabel.hidden = YES;

[self.view addSubview:_nonNetworkLabel];

[self isNetWorkReachable];

}

//// 以下说一下原生的,地址

https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007324-Intro-DontLinkElementID_2

非常久后:

- (NetworkStatus)statusForNet

{

Reachability *reachability   = [Reachability
reachabilityWithHostName:@"www.apple.com"];

NetworkStatus netStatus = [reachability
currentReachabilityStatus];

return netStatus;

}

- (BOOL)isHaveNetWork

{

if([self
statusForNet] ==
ReachableViaWiFi || [self
statusForNet] ==
ReachableViaWWAN){

return
YES;

}else{

return
NO;

}

}

- (void)replyAction:(UIButton *)sender

{

if ([self
isHaveNetWork]){

//

}else{

[self
showTextPrompt:nil

prompt:@"当前没有网络"];

sender.userInteractionEnabled =
NO;

}

sender.userInteractionEnabled =
YES;

}

说说为什么这个时候贴出这些代码, 关于项目的严谨性,断网的时候须要做一些预判的,我们常规的返回结果都是请求后给的,达不到想要的效果,比方没网时关闭用户交互并提示

时间: 2024-10-13 01:03:35

检測网络连接状态的相关文章

android中检測网络连接状态简单总结

相应差点儿没有不跟网络打交道的android应用,那么在实际中就需求检測手机是否有网络连接.甚至须要推断是何种方式连接,这样能给用户带来更好的体验和一些使用指导,以下给出一些经常使用的推断.假设要知道是否有网络.以及是採用wifi连接的还是3G连接的.调用以下相应方法模型就OK了.代码例如以下: TestNetworkActivity: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Android判断网络连接状态

需要相关权限 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/

李洪强iOS下的实际网络连接状态检测

iOS下的实际网络连接状态检测 序言 网络连接状态检测对于我们的iOS app开发来说是一个非常通用的需求.为了更好的用户体验,我们会在无网络时展现本地或者缓存的内容,并对用户进行合适的提示.对绝大部分iOS开发者来说,从苹果示例代码改变而来的各种Reachablity框架是实现这个需求的普遍选择,比如这个库.但事实上,基于此方案的所有实现,都无法帮助我们检测真正的网络连接状态,它们能检测的只是本地连接状态:这种情况包括但不限于如下场景: 1.现在很流行的公用wifi,需要网页鉴权,鉴权之前无法

android检测网络连接状态示例讲解

网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置 Android连接首先,要判断网络状态,需要有相应的权限,下面为权限代码(AndroidManifest.xml): 复制代码 代码如下: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="a

Android 网络连接状态的监控

有些应用需要连接网络,例如更新后台服务,刷新数据等,最通常的做法是定期联网,直接使用网上资源.缓存数据或执行一个下载任务来更新数据. 但是如果终端设备没有连接网络,或者网速较慢,就没必要执行这些任务.可以使用ConnectivityManager检查是事联网以及当前是何种类型的网络.具体 代码如下: ConnectivityManager cm = (ConnectivityManager) getApplicationContext().getSystemService(Context.CON

CentOS下netstat + awk 查看tcp的网络连接状态

执行以下命令: #netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key."\t".state[key]}’ 会得到类似下面的结果,具体数字会有所不同: FIN_WAIT_1 286 FIN_WAIT_2 960 SYN_SENT 3 LAST_ACK 32 CLOSING 1 CLOSED 36 SYN_RCVD 144 TIME_WAIT 2520 ESTABLISHED 352 #差不多等于

什么是网络连接状态指示器NCSI

什么是网络连接状态指示器? (NCSI ,Network Connectivity Status Indicator),中文意思:网络连接状态指示器,是Windows系统判断某一台机器是否能够连接到Internet的技术.其实,最早是Vista率先采用了该功能. 每一位用户连接到网络时,系统会自动向微软发送一个域名访问请求,访问的结果就是作为网络连接状况指示器.如下图,表示网络连接正常. 如何检测网络是否正常? 1) NCSI首先在dns.msftncsi.com上执行一次DNS查询,dns.m

VMware 桥接 Bridge 复制物理网络连接状态

https://zhidao.baidu.com/question/535593443.html 意思就是说,VM上使用的是虚拟的网卡,也就是说VM虚拟机上的网卡不是真实存在的,而桥接还有其他的网路链接方式,都是必须存在网卡的.复制物理网卡连接状态,就是说把你指定的.本机的.真是网卡的状态信息复制给虚拟机的虚拟网卡,比如说你的本机真是网卡链接到了家用路由器的LAN口上,获得到了DHCP分配的地址,那么你的虚拟网卡就好像和真是网卡接入了同一台交换机中,也可以获得DHCP分配到的地址. http:/

android设备判断网络连接状态

android开发中,在做网络请求前判断当前网络连接状态有时很有必要.本文将介绍如何获取android设备当前网络连接状态! 所需权限(AndroidManifest.xml文件中添加): <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> Java代码(MainActivity.java文件) package com.example.androidtest; import a