проверить подключение к Интернету в cocoa-приложении
Как проверить подключение к Интернету в приложении OS X для cocoa? Может ли код Apple iOS Reachability использоваться повторно для этой цели?
Благодаря,
Нава
- Присоединение темы к себе
- Что именно влияет на URLConnection.setDoOutput ()?
- «Основное соединение было закрыто: при отправке произошла непредвиденная ошибка». С SSL-сертификатом
- Hibernate Slow для получения соединения Postgres
- HttpClient 4.0.1 - как освободить соединение?
- Можно ли использовать статический экземпляр java.sql.Connection в многопоточной системе?
- java.rmi.ConnectException: подключение отказалось от хоста: 127.0.1.1;
- Код необходимости создания пула соединений в java
- Почему при запуске URL-адреса возникает исключение «java.net.ConnectException: Connection timed out»?
- Запустить командный файл с командой psql без пароля
- Как несколько клиентов одновременно подключаются к одному порту, например 80, на сервере?
- Загрузка JSON с NSURLSession не возвращает никаких данных
- mySQL - создание новой таблицы с использованием данных и столбцов из трех таблиц
Этот код поможет вам найти доступность Интернета или нет:
-(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. текст ссылки