Проверить подключение к Интернету в приложении cocoa
Как проверить подключение к Интернету в приложении OS X cocoa?
Может ли код Apple iOS Reachability использоваться повторно для этой цели?
Спасибо,
Нава
Ответы
Ответ 1
Этот код поможет вам найти доступность Интернета или нет:
-(BOOL)isInternetAvail
{
BOOL bRet = FALSE;
const char *hostName = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkConnectionFlags flags = 0;
if (SCNetworkCheckReachabilityByName(hostName, &flags) && flags > 0)
{
if (flags == kSCNetworkFlagsReachable)
{
bRet = TRUE;
}
else
{
}
}
else
{
}
return bRet;
}
Для получения дополнительной информации вы можете посмотреть iphone-достижимость
Ответ 2
Текущая версия кода достижимости (2.2), указанная на сайте Apple и упомянутая выше, НЕ компилируется как приложение для Mac OS X Cocoa. Константа kSCNetworkReachabilityFlagsIsWWAN доступна только при компиляции для TARGET_OS_IPHONE и Reachability.m ссылок, которые являются постоянными. Вам нужно будет #ifdef в двух местах в Reachability.m, которые ссылаются на него, как показано ниже:
#if TARGET_OS_IPHONE
(flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-',
#else
0,
#endif
и
#if TARGET_OS_IPHONE
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
{
// ... but WWAN connections are OK if the calling application
// is using the CFNetwork (CFSocketStream?) APIs.
retVal = ReachableViaWWAN;
}
#endif
Ответ 3
Решение Unicorn устарело, но вы можете получить эквивалентные результаты, используя следующий код:
SCNetworkReachabilityRef target;
SCNetworkConnectionFlags flags = 0;
Boolean ok;
target = SCNetworkReachabilityCreateWithName(NULL, hostName);
ok = SCNetworkReachabilityGetFlags(target, &flags);
CFRelease(target);
Ответ 4
У Apple есть хороший код, который делает это за вас. Вы можете проверить, является ли ваше соединение WiFi для instnace или просто сотовой /WiFi.
текст ссылки