проверить подключение к Интернету в cocoa-приложении

Как проверить подключение к Интернету в приложении OS X для cocoa? Может ли код Apple iOS Reachability использоваться повторно для этой цели?

Благодаря,

Нава

Этот код поможет вам найти доступность Интернета или нет:

 -(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), указанная на сайте 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 

Решение Unicorn устарело, но вы можете получить эквивалентные результаты, используя следующий код:

 SCNetworkReachabilityRef target; SCNetworkConnectionFlags flags = 0; Boolean ok; target = SCNetworkReachabilityCreateWithName(NULL, hostName); ok = SCNetworkReachabilityGetFlags(target, &flags); CFRelease(target); 

У Apple есть хороший код, который делает это за вас. Вы можете проверить, является ли ваше соединение WiFi для instnace или просто сотовой / WiFi. текст ссылки

  • Соединение RMI отказалось на localhost
  • Как немедленно закрыть сервер HTTP (Node.js)?
  • Мгновенно обнаруживать отключение клиента от серверного сокета
  • Какой порт используется соединением Java RMI?
  • Eclipse: Не удалось подключиться к удаленной виртуальной машине. В соединении отказано.
  • Выбор библиотеки пула Java JDBC в 2011/2012?
  • В чем разница между соединением и таймаутом чтения для сокетов?
  • Строка подключения с относительным путем к файлу базы данных
  • Java обнаруживает потерянное соединение
  • Пользовательский агент Android HTTP
  • Как управлять соединениями MongoDB в веб-приложении Node.js?
  • Давайте будем гением компьютера.