gpt4 book ai didi

objective-c - 如何确定 Cocoa 中的 Internet 连接?

转载 作者:太空狗 更新时间:2023-10-30 03:39:34 26 4
gpt4 key购买 nike

我需要确定 Internet 连接是否可用。我不在乎它是如何连接的(WI-FI、Lan 等)。我需要确定 Internet 连接是否可用。

附言我找到了一种检查 WI-FI 连接的方法。但我不关心它是如何连接的(我需要检查所有可以连接到互联网的方式)。

类似(已连接)

最佳答案

我希望这段代码适用于 iOS 和 OSX 平台。

#include <SystemConfiguration/SystemConfiguration.h>
static BOOL isInternetConnection()
{
BOOL returnValue = NO;

#ifdef TARGET_OS_MAC

struct sockaddr zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sa_len = sizeof(zeroAddress);
zeroAddress.sa_family = AF_INET;

SCNetworkReachabilityRef reachabilityRef = SCNetworkReachabilityCreateWithAddress(NULL, (const struct sockaddr*)&zeroAddress);


#elif TARGET_OS_IPHONE

struct sockaddr_in address;
size_t address_len = sizeof(address);
memset(&address, 0, address_len);
address.sin_len = address_len;
address.sin_family = AF_INET;

SCNetworkReachabilityRef reachabilityRef = SCNetworkReachabilityCreateWithAddress(NULL, (const struct sockaddr*)&address);

#endif

if (reachabilityRef != NULL)
{
SCNetworkReachabilityFlags flags = 0;

if(SCNetworkReachabilityGetFlags(reachabilityRef, &flags))
{
BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0);
BOOL connectionRequired = ((flags & kSCNetworkFlagsConnectionRequired) != 0);
returnValue = (isReachable && !connectionRequired) ? YES : NO;
}

CFRelease(reachabilityRef);
}

return returnValue;

}

关于objective-c - 如何确定 Cocoa 中的 Internet 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com