Ссылка SCNetworkReachability
SCNetworkReachability интерфейс программирования позволяет приложению определять состояние текущей конфигурации сети системы и достижимость целевого узла. Когда пакет данных, отправленный приложением в сетевой стек, может оставить локальное устройство, удаленный узел считают достижимым. Достижимость не гарантирует, что пакет данных будет фактически получен узлом.
SCNetworkReachability интерфейс программирования поддерживает синхронное и асинхронную модель. В синхронной модели Вы получаете состояние достижимости путем вызова SCNetworkReachabilityGetFlags функция. В асинхронной модели можно запланировать SCNetworkReachability объект на цикле выполнения потока объекта клиента. Когда состояние достижимости данного удаленного узла изменяется, клиент реализует функцию обратного вызова для получения уведомлений. Обратите внимание на то, что эти функции следуют Базовым соглашениям о присвоении имен Основы. Имеющая функция «Создает», или «Копия» на ее имя возвращает ссылку, которую необходимо выпустить с CFRelease функция.
Для получения информации об обнаружении и интерпретации ошибок, сгенерированных путем вызывания этих функций, посмотрите Ссылку Конфигурации системы.
-
Создает ссылку достижимости на указанный сетевой адрес.
Объявление
Swift
func SCNetworkReachabilityCreateWithAddress(_allocator: CFAllocator!, _address: UnsafePointer<sockaddr>) -> Unmanaged<SCNetworkReachability>!Objective C
SCNetworkReachabilityRef SCNetworkReachabilityCreateWithAddress ( CFAllocatorRef allocator, const struct sockaddr *address );Параметры
allocatorСредство выделения для использования. Передача
NULLилиkCFAllocatorDefaultиспользовать средство выделения по умолчанию.addressАдрес желаемого узла. Значение этого параметра копируется в новый объект.
Возвращаемое значение
Новая неизменная ссылка достижимости. Необходимо выпустить возвращенное значение.
Обсуждение
Можно использовать ссылку достижимости, возвращенную этой функцией для контроля достижимости целевого узла.
Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Создает ссылку достижимости на указанный сетевой адрес.
Объявление
Swift
func SCNetworkReachabilityCreateWithAddressPair(_allocator: CFAllocator!, _localAddress: UnsafePointer<sockaddr>, _remoteAddress: UnsafePointer<sockaddr>) -> Unmanaged<SCNetworkReachability>!Objective C
SCNetworkReachabilityRef SCNetworkReachabilityCreateWithAddressPair ( CFAllocatorRef allocator, const struct sockaddr *localAddress, const struct sockaddr *remoteAddress );Параметры
allocatorСредство выделения для использования. Передача
NULLилиkCFAllocatorDefaultиспользовать средство выделения по умолчанию.localAddressЛокальный адрес связался с сетевым соединением. Если
NULL, только удаленный адрес представляет интерес. Значение этого параметра копируется в новый объект.remoteAddressУдаленный адрес связался с сетевым соединением. Если
NULL, только локальный адрес представляет интерес. Значение этого параметра копируется в новый объект.Возвращаемое значение
Новая неизменная ссылка достижимости. Необходимо выпустить возвращенное значение.
Обсуждение
Можно использовать ссылку достижимости, возвращенную этой функцией для контроля достижимости целевого узла.
Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Создает ссылку достижимости на указанный сетевой узел или имя узла.
Объявление
Swift
func SCNetworkReachabilityCreateWithName(_allocator: CFAllocator!, _nodename: UnsafePointer<Int8>) -> Unmanaged<SCNetworkReachability>!Objective C
SCNetworkReachabilityRef SCNetworkReachabilityCreateWithName ( CFAllocatorRef allocator, const char *nodename );Параметры
allocatorСредство выделения для использования. Передача
NULLилиkCFAllocatorDefaultиспользовать средство выделения по умолчанию.nodenameИмя узла желаемого узла. Это имя совпадает с, который передал
gethostbynameилиgetaddrinfoфункции. Значение этого параметра копируется в новый объект.Возвращаемое значение
Новая неизменная ссылка достижимости. Необходимо выпустить возвращенное значение.
Обсуждение
Можно использовать ссылку достижимости, возвращенную этой функцией для контроля достижимости целевого узла.
Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Определяет, является ли указанная сетевая цель достижимым использованием текущей конфигурации сети.
Объявление
Swift
func SCNetworkReachabilityGetFlags(_target: SCNetworkReachability!, _flags: UnsafeMutablePointer<SCNetworkReachabilityFlags>) -> BooleanObjective C
Boolean SCNetworkReachabilityGetFlags ( SCNetworkReachabilityRef target, SCNetworkReachabilityFlags *flags );Параметры
targetСетевая ссылка связалась с адресом или именем, которое будет проверено на достижимость.
flagsУказатель на память, которая, на выводе, заполнена флагами, описывающими достижимость указанной цели. (См. Сетевые Флаги Достижимости для возможных значений.)
Возвращаемое значение
TRUEесли флаги допустимы;FALSEесли не могло бы быть определено состояние.Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Возвращает идентификатор типа всех
SCNetworkReachabilityэкземпляры.Объявление
Swift
func SCNetworkReachabilityGetTypeID() -> CFTypeIDObjective C
CFTypeID SCNetworkReachabilityGetTypeID ( void );Возвращаемое значение
Идентификатор типа всех
SCNetworkReachabilityэкземпляры.Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Присваивает клиент указанной цели, получающей обратные вызовы, когда изменяется достижимость цели.
Объявление
Swift
func SCNetworkReachabilitySetCallback(_target: SCNetworkReachability!, _callout: SCNetworkReachabilityCallBack, _context: UnsafeMutablePointer<SCNetworkReachabilityContext>) -> BooleanObjective C
Boolean SCNetworkReachabilitySetCallback ( SCNetworkReachabilityRef target, SCNetworkReachabilityCallBack callout, SCNetworkReachabilityContext *context );Параметры
targetСетевая ссылка связалась с адресом или именем, которое будет проверено на достижимость.
calloutФункция, которую вызовут, когда достижимость целевых изменений. Если
NULL, текущий клиент для цели удален.contextКонтекст достижимости связался с выноской. Это значение может быть
NULL.Возвращаемое значение
TRUEесли был успешно установлен клиент уведомления; иначе,FALSE.Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Планирует указанную сетевую цель с указанным циклом выполнения и режимом.
Объявление
Swift
func SCNetworkReachabilityScheduleWithRunLoop(_target: SCNetworkReachability!, _runLoop: CFRunLoop!, _runLoopMode: CFString!) -> BooleanObjective C
Boolean SCNetworkReachabilityScheduleWithRunLoop ( SCNetworkReachabilityRef target, CFRunLoopRef runLoop, CFStringRef runLoopMode );Параметры
targetАдрес или имя, устанавливающееся для асинхронных уведомлений. Не должен быть
NULL.runLoopЦикл выполнения, на который должна быть запланирована цель. Не должен быть
NULL.runLoopModeРежим, в котором можно запланировать цель. Не должен быть
NULL.Возвращаемое значение
TRUEесли цель планируется успешно; иначе,FALSE.Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Не планирует указанную цель от указанного цикла выполнения и режима.
Объявление
Swift
func SCNetworkReachabilityUnscheduleFromRunLoop(_target: SCNetworkReachability!, _runLoop: CFRunLoop!, _runLoopMode: CFString!) -> BooleanObjective C
Boolean SCNetworkReachabilityUnscheduleFromRunLoop ( SCNetworkReachabilityRef target, CFRunLoopRef runLoop, CFStringRef runLoopMode );Параметры
targetАдрес или имя, устанавливающееся для асинхронных уведомлений. Не должен быть
NULL.runLoopЦикл выполнения, на котором цель должна быть не запланирована. Не должен быть
NULL.runLoopModeРежим, в котором можно не запланировать цель. Не должен быть
NULL.Возвращаемое значение
TRUEесли цель не запланирована успешно; иначе,FALSE.Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Обратные вызовы расписаний для указанной цели на указанной очереди отгрузки.
Объявление
Swift
func SCNetworkReachabilitySetDispatchQueue(_target: SCNetworkReachability!, _queue: dispatch_queue_t!) -> BooleanObjective C
Boolean SCNetworkReachabilitySetDispatchQueue ( SCNetworkReachabilityRef target, dispatch_queue_t queue );Параметры
targetАдрес или имя, устанавливающееся для асинхронных уведомлений. Не должен быть
NULL.queuelibdispatch очередь, на которой должна работать цель. Передача
NULLотключить уведомления и выпустить очередь.Возвращаемое значение
TRUEесли цель планируется успешно; иначе,FALSE.Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.6 и позже.
-
Тип функции обратного вызова, используемой, когда достижимость сетевого адреса или смен имени.
Объявление
Swift
typealias SCNetworkReachabilityCallBack = CFunctionPointer<((SCNetworkReachability!, SCNetworkReachabilityFlags, UnsafeMutablePointer<Void>) -> Void)>Objective C
typedef void (*SCNetworkReachabilityCallBack) ( SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info );Параметры
targetСетевая цель, контролируемая для изменений.
flagsФлаги, представляющие состояние достижимости сетевого адреса или имени (см. Сетевые Флаги Достижимости для получения информации об этих флагах).
infoУказатель C на указанный пользователями блок данных.
Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Дескриптор к сетевому адресу или имени.
Объявление
Swift
typealias SCNetworkReachabilityRef = SCNetworkReachabilityObjective C
typedef const struct __SCNetworkReachability * SCNetworkReachabilityRef;Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Структура, содержащая указанные пользователями данные и обратные вызовы, используемые с
SCNetworkReachabilitySetCallback.Объявление
Swift
struct SCNetworkReachabilityContext { var version: CFIndex var info: UnsafeMutablePointer<Void> var retain: CFunctionPointer<((UnsafePointer<Void>) -> UnsafePointer<Void>)> var release: CFunctionPointer<((UnsafePointer<Void>) -> Void)> var copyDescription: CFunctionPointer<((UnsafePointer<Void>) -> Unmanaged<CFString>!)> }Objective C
typedef struct { CFIndex version; void * info; const void *(*retain)(const void *info); void (*release)(const void *info); CFStringRef (*copyDescription)(const void *info); } SCNetworkReachabilityContext;Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.3 и позже.
-
Флаги, указывающие достижимость имени сетевого узла или адреса, включая то, требуется ли соединение, и могло ли бы некоторое вмешательство пользователя требоваться при установлении соединения.
Объявление
Swift
typealias SCNetworkReachabilityFlags = UInt32Objective C
enum { kSCNetworkReachabilityFlagsTransientConnection = 1<<0, kSCNetworkReachabilityFlagsReachable = 1<<1, kSCNetworkReachabilityFlagsConnectionRequired = 1<<2, kSCNetworkReachabilityFlagsConnectionOnTraffic = 1<<3, kSCNetworkReachabilityFlagsInterventionRequired = 1<<4, kSCNetworkReachabilityFlagsConnectionOnDemand = 1<<5, kSCNetworkReachabilityFlagsIsLocalAddress = 1<<16, kSCNetworkReachabilityFlagsIsDirect = 1<<17, kSCNetworkReachabilityFlagsConnectionAutomatic = kSCNetworkReachabilityFlagsConnectionOnTraffic }; typedef uint32_t SCNetworkReachabilityFlags;Константы
-
kSCNetworkReachabilityFlagsTransientConnectionkSCNetworkReachabilityFlagsTransientConnectionУказанное имя узла или адрес могут быть достигнуты через переходное соединение, такое как PPP.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsReachablekSCNetworkReachabilityFlagsReachableУказанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionRequiredkSCNetworkReachabilityFlagsConnectionRequiredУказанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Если этот флаг установлен,
kSCNetworkReachabilityFlagsConnectionOnTrafficфлаг,kSCNetworkReachabilityFlagsConnectionOnDemandфлаг, илиkSCNetworkReachabilityFlagsIsWWANфлаг также обычно устанавливается указать тип требуемого соединения. Если пользователь должен вручную сделать соединение,kSCNetworkReachabilityFlagsInterventionRequiredфлаг также установлен.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionOnTraffickSCNetworkReachabilityFlagsConnectionOnTrafficУказанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Любой трафик, направленный к указанному имени или адресу, будет инициировать соединение.
Этот флаг ранее назвали
kSCNetworkReachabilityFlagsConnectionAutomatic.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsInterventionRequiredkSCNetworkReachabilityFlagsInterventionRequiredУказанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение.
Кроме того, некоторая форма вмешательства пользователя потребуется, чтобы устанавливать это соединение, такое как обеспечение пароля, аутентификационного маркера, и т.д.
В настоящее время этот флаг возвращается только, когда существует набор на конфигурировании трафика (
kSCNetworkReachabilityFlagsConnectionOnTraffic), попытка соединиться была уже предпринята, и когда некоторая ошибка (такая как никакой тональный сигнал готовности к набору номера, никакой ответ, неверный пароль, и т.д.) произошла во время автоматической попытки подключения. В этом случае контроллер PPP прекращает пытаться установить соединение, пока не вмешался пользователь.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionOnDemandkSCNetworkReachabilityFlagsConnectionOnDemandУказанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Соединение будет установлено «По требованию»
CFSocketStreamинтерфейс программирования (см. Дополнения Сокета CFStream для получения информации об этом). Другие функции не установят соединение.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsIsLocalAddresskSCNetworkReachabilityFlagsIsLocalAddressУказанное имя узла или адрес являются тем, связанным с сетевым интерфейсом на существующей системе.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsIsDirectkSCNetworkReachabilityFlagsIsDirectСетевой трафик к указанному имени узла или адресу не пройдет через шлюз, но направляется непосредственно к одному из интерфейсов в системе.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionAutomatickSCNetworkReachabilityFlagsConnectionAutomaticУказанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Любой трафик, направленный к указанному имени или адресу, будет инициировать соединение. Этот флаг является синонимом для
kSCNetworkReachabilityFlagsConnectionOnTraffic.Доступный в OS X v10.6 и позже.
Оператор импорта
Objective C
@import SystemConfiguration;Swift
import SystemConfigurationДоступность
Доступный в OS X v10.6 и позже.
-
