在我的应用程序中,我想检查当前OS X系统中是否存在任何类型的现有网络。以太网或互联网或Wifi或3G卡或任何其他类型的网络通信。
我怎样才能做到这一点?
谢谢!
https://stackoverflow.com/questions/5662298...
感谢bdash和cody!我做了我的作业,发现了上面的另一个答案。但这是针对iPhone的,我在下面做了一些修改。
- (BOOL)isAnyNetworkExist
{
struct sockaddr_in nullAddress;
bzero(&nullAddress, sizeof(nullAddress));
nullAddress.sin_len = sizeof(nullAddress);
nullAddress.sin_family = AF_INET;
SCNetworkReachabilityRef ref = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*) &nullAddress);
SCNetworkReachabilityFlags flags;
SCNetworkReachabilityGetFlags(ref, &flags);
CFRelease(ref); /* !!! */
AMCDebug(@"Flag: 0x%08X", flags);
if (0 != (flags & kSCNetworkFlagsIsLocalAddress))
{
return YES;
}
else
{
return NO;
}
}
我只检查“ kSCNetworkFlagsIsLocalAddress ”,但我不确定这是否正常。
当我删除所有网络连接时,我尝试了该标志,它返回0x07。
答案 0 :(得分:1)
你应该看看SCNetworkReachability。通常,您将创建可访问性对象并将其添加到运行循环中,并且当它可以访问时您将获得回调。有关详细信息,请参阅this帖子
另请查看SCNetworkConfiguration:您可以浏览系统中的所有接口,看看是否有任何接口连接。
你也可以看一下SCDynamicStore。苹果邮件列表中有一个example。