【发布时间】:2013-04-09 09:05:02
【问题描述】:
在我的应用程序中,我想检查当前 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。
【问题讨论】:
-
这是stackoverflow.com/questions/7627058/… 或stackoverflow.com/questions/4367927/… 的副本。从这个问题中不清楚哪个最合适。
-
不,该链接使用 shell 命令来执行此操作。我想要的是应用程序运行时的方式。也许这可能会工作http://stackoverflow.com/questions/4021095/...。我会继续寻找...
-
所有链接的问题都不需要 shell 命令。他们每个人都有指向各种 SystemConfiguration API 的答案。
-
哦,对不起!我想念你的第一个链接!我现在就试试 Reachability。
-
非常感谢。我把我的进一步作业放在上面。你的意见呢?
标签: xcode macos networking network-programming