
(一)Reachability
添加源文件及Framework
Apple 的官方例子 Reachability 中介绍了获取、检测设备当前网络状态的方法。在你的程序中,需要把该工程中的Reachabilityh 和 Reachabilitym 拷贝到你的工程中,同时需要把 SystemConfigurationframework 添加到工程中,
如下图:
// 监听网络状态改变的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
// 创建Reachability
selfconn = [Reachability reachabilityForInternetConnection];
// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[selfconn startNotifier];
// 处理网络状态改变
- (void)networkStateChange
{
// 1检测wifi状态
Reachability wifi = [Reachability reachabilityForLocalWiFi];
// 2检测手机是否能上网络(WIFI\3G\25G)
Reachability conn = [Reachability reachabilityForInternetConnection];
// 3判断网络状态
if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
NSLog(@"有wifi");
} else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
NSLog(@"使用手机自带网络进行上网");
} else { // 没有网络
NSLog(@"没有网络");
}
}
(二)AFN
// 1获得网络监控的管理者
AFNetworkReachabilityManager mgr = [AFNetworkReachabilityManager sharedManager];
// 2设置网络状态改变后的处理
[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
// 当网络状态改变了, 就会调用这个block
switch (status) {
case AFNetworkReachabilityStatusUnknown: // 未知网络
NSLog(@"未知网络");
break;
case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)
NSLog(@"没有网络(断网)");
break;
case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络
NSLog(@"手机自带网络");
break;
case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI
NSLog(@"WIFI");
break;
}
}];
// 3开始监控
[mgr startMonitoring];
(三)从状态栏中获取网络类型,代码如下:
- (NSString )getNetWorkStates{
UIApplication app = [UIApplication sharedApplication];
NSArray children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];
NSString state = [[NSString alloc]init];
int netType = 0;
//获取到网络返回码
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
//获取到状态栏
netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];
switch (netType) {
case 0:
state = @"无网络";
//无网模式
break;
case 1:
state = @"2G";
break;
case 2:
state = @"3G";
break;
case 3:
state = @"4G";
break;
case 5:
{
state = @"wifi";
break;
default:
break;
}
}
}
//根据状态选择
}
return state;
}
基本原理是从UIApplication类型中通过valueForKey获取内部属性 statusBar。然后筛选一个内部类型
(UIStatusBarDataNetworkItemView),最后返回他的 dataNetworkType属性,根据状态栏获取网络
状态,可以区分2G、3G、4G、WIFI,系统的方法,比较快捷,不好的是万一连接的WIFI 没有联网的话,
识别不到。
如果电脑网络图标上有感叹号、网络受限
1、新装宽带或者路由器,可能PPPOE拨号的宽带帐号和密码错误,注意区分“大小写字母”!!!
2、如果以前没问题,突然出现的,说明宽带断网,等一会儿吧(一般1小时左右)
3、检查路由器与宽带猫的网线是否接触良好
反复出现上面故障,说明宽带网络不稳定,请拔打宽带服务电话,报修
方法/步骤
点击左下角开始按钮,然后输入cmd,点击键盘上的回车键,成功打开了命令行工具
在命令行界面输入cd (注意cd后有空格)后按Enter键进入上级目录;
在输入cd 后按Enter键进入根目录
进入C盘的根目录下输入“netstat -a”后按Enter键,用于查看本地计算机的连接和监听端口
在C盘根目录下输入“netstat -n”后按Enter键,查看关于以太网的统计数据
netstat命令参数的解析:
在C盘根目录下输入“netstat help”后按Enter键,查看关于netstat命令参数的详细说明
以下是对netstat命令的详细说明(可以帮助大家更好了解netstat命令的使用):
netstat命令的格式为netstat[-a][-b][-e][-n][-o][-p proto][-r][-s][-v][interv
val],该命令所包含的参数含义如下:-a:显示本地计算机所有的连接和端口。-b:显示包含创建每个连接或监听端口的可执行组件。-e:显示以太网统计的数据,该参数可以与-s结合使用。-n:以网络IP代替名称,显示出网络连接情形。-o:显示与每个连接相关的所属进程ID。-p proto:显示pro指定的协议的连接,proto可以是TCP或UDP。-r:显示路由选择表。-s:在机器的默认情况下显示每个协议的配置统计,包括TCP、UDP、IP、ICMP等。-v:与-b一起使用时将显示包含为所有可执行组件创建连接或监听端口的组件。interval:每隔interval秒重复显示所选协议的配置情况,直至按Ctrl+C组合键中断为止。
以上就是关于ios的代理中怎么检查网络连接状态全部的内容,包括:ios的代理中怎么检查网络连接状态、如何判断当前网络连接状态、如何使用netstat命令查看网络状态等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)