如何检查 Wifi 中的可用网络

Posted

技术标签:

【中文标题】如何检查 Wifi 中的可用网络【英文标题】:How to check Internet available in Wifi 【发布时间】:2017-03-13 13:10:23 【问题描述】:

如何检查互联网连接是否可用

我正在使用 Apple Reachability 类通过以下代码检查网络状态

-(BOOL)isInternetConnectionAvailable

    return ([[Reachability reachabilityForInternetConnection]currentReachabilityStatus] == NotReachable)?NO:YES;

我有一个移动热点,然后将那个 wifi 连接到我的 iPhone。 然后移动数据关闭,热点开启。 但是 rechability 类正在返回ReachableViaWiFi 如何检查网络是否有互联网。

【问题讨论】:

找到你的答案:***.com/questions/1083701/… 【参考方案1】:

为此,您必须检查互联网,为此创建一个互联网验证类,然后在您使用互联网的每个地方调用该类。

在您的 .h 文件中创建一个静态方法,如下所示。

#import <Foundation/Foundation.h>

@interface InternetValidation : NSObject 



+ (BOOL) connectedToNetwork;

@end

然后,在你的 .m 文件中

#import "InternetValidation.h"
#import <SystemConfiguration/SCNetworkReachability.h>
#include <netinet/in.h>

@implementation InternetValidation

+ (BOOL) connectedToNetwork



    BOOL success = NO;
    const char *host_name = [@"google.com"
                             cStringUsingEncoding:NSASCIIStringEncoding];

    SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
                                                                                host_name);
    SCNetworkReachabilityFlags flags;
    success = SCNetworkReachabilityGetFlags(reachability, &flags);
    BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
    if (isAvailable) 
        success = YES;
    else
        success = NO;
    
    //NSLog(@"%d",success);
    return success;




@end

现在,将这个类导入到你要检查互联网的地方。

然后像这样调用那个互联网类方法。

if ([InternetValidation connectedToNetwork])
    //Do your code here.

else
    // No Internet;

【讨论】:

这不起作用。它返回是,即使互联网不可用。

以上是关于如何检查 Wifi 中的可用网络的主要内容,如果未能解决你的问题,请参考以下文章

如何在手机中检查 WIFI 和 3G(数据计划)中的网络连接启用或禁用?

如何获取可用的 wifi 网络并将它们显示在 android 的列表中

如何在android中检查网络是不是连接到wifi [重复]

即使设备连接到 Wifi 或移动数据,也要检查互联网可用性 [重复]

Surface Pro4无法连接WiFi怎么办及提示网络受限

下载的app为啥在4G情况下不能登录,在wifi的情况下可用?