Ссылка 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() -> CFTypeID
Objective 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
.queue
libdispatch очередь, на которой должна работать цель. Передача
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 = SCNetworkReachability
Objective 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 = UInt32
Objective 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;
Константы
-
kSCNetworkReachabilityFlagsTransientConnection
kSCNetworkReachabilityFlagsTransientConnection
Указанное имя узла или адрес могут быть достигнуты через переходное соединение, такое как PPP.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsReachable
kSCNetworkReachabilityFlagsReachable
Указанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionRequired
kSCNetworkReachabilityFlagsConnectionRequired
Указанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Если этот флаг установлен,
kSCNetworkReachabilityFlagsConnectionOnTraffic
флаг,kSCNetworkReachabilityFlagsConnectionOnDemand
флаг, илиkSCNetworkReachabilityFlagsIsWWAN
флаг также обычно устанавливается указать тип требуемого соединения. Если пользователь должен вручную сделать соединение,kSCNetworkReachabilityFlagsInterventionRequired
флаг также установлен.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionOnTraffic
kSCNetworkReachabilityFlagsConnectionOnTraffic
Указанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Любой трафик, направленный к указанному имени или адресу, будет инициировать соединение.
Этот флаг ранее назвали
kSCNetworkReachabilityFlagsConnectionAutomatic
.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsInterventionRequired
kSCNetworkReachabilityFlagsInterventionRequired
Указанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение.
Кроме того, некоторая форма вмешательства пользователя потребуется, чтобы устанавливать это соединение, такое как обеспечение пароля, аутентификационного маркера, и т.д.
В настоящее время этот флаг возвращается только, когда существует набор на конфигурировании трафика (
kSCNetworkReachabilityFlagsConnectionOnTraffic
), попытка соединиться была уже предпринята, и когда некоторая ошибка (такая как никакой тональный сигнал готовности к набору номера, никакой ответ, неверный пароль, и т.д.) произошла во время автоматической попытки подключения. В этом случае контроллер PPP прекращает пытаться установить соединение, пока не вмешался пользователь.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionOnDemand
kSCNetworkReachabilityFlagsConnectionOnDemand
Указанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Соединение будет установлено «По требованию»
CFSocketStream
интерфейс программирования (см. Дополнения Сокета CFStream для получения информации об этом). Другие функции не установят соединение.Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsIsLocalAddress
kSCNetworkReachabilityFlagsIsLocalAddress
Указанное имя узла или адрес являются тем, связанным с сетевым интерфейсом на существующей системе.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsIsDirect
kSCNetworkReachabilityFlagsIsDirect
Сетевой трафик к указанному имени узла или адресу не пройдет через шлюз, но направляется непосредственно к одному из интерфейсов в системе.
Доступный в OS X v10.6 и позже.
-
kSCNetworkReachabilityFlagsConnectionAutomatic
kSCNetworkReachabilityFlagsConnectionAutomatic
Указанное имя узла или адрес могут быть достигнуты с помощью текущей конфигурации сети, но должно сначала быть установлено соединение. Любой трафик, направленный к указанному имени или адресу, будет инициировать соединение. Этот флаг является синонимом для
kSCNetworkReachabilityFlagsConnectionOnTraffic
.Доступный в OS X v10.6 и позже.
Оператор импорта
Objective C
@import SystemConfiguration;
Swift
import SystemConfiguration
Доступность
Доступный в OS X v10.6 и позже.
-