Ссылка CFSocket
CFSocket является каналом передачи, реализованным с сокетом BSD.
Для большей части использования этого API необходимо будет включать три заголовка:
#import <CoreFoundation/CoreFoundation.h> #include <sys/socket.h> #include <netinet/in.h>
CFSocket может быть создан с нуля с CFSocketCreate и CFSocketCreateWithSocketSignature. Объекты CFSocket могут также быть созданы для обертывания существующего сокета BSD путем вызова CFSocketCreateWithNative. Наконец, можно создать CFSocket и соединиться одновременно с удаленным узлом путем вызова CFSocketCreateConnectedToSocketSignature.
Для прислушиваний к сообщениям необходимо создать источник цикла выполнения с CFSocketCreateRunLoopSource и добавьте его к циклу выполнения с CFRunLoopAddSource. Можно выбрать типы действий сокета, такие как попытки подключения или поступления данных, та причина источник, чтобы запустить и вызвать функцию обратного вызова CFSOCKET. Для отправки данных Вы храните данные в CFData и вызове CFSocketSendData.
В отличие от Маха и портов сообщения, коммуникации поддержки сокетов по сети.
-
Создает объект CFSocket указанного протокола и типа.
Объявление
Swift
func CFSocketCreate(_allocator: CFAllocator!, _protocolFamily: Int32, _socketType: Int32, _ `protocol`: Int32, _callBackTypes: CFOptionFlags, _callout: CFSocketCallBack, _context: UnsafePointer<CFSocketContext>) -> CFSocket!Objective C
CFSocketRef CFSocketCreate ( CFAllocatorRef allocator, SInt32 protocolFamily, SInt32 socketType, SInt32 protocol, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.protocolFamilyСемейство протокола для сокета. Если отрицательный или 0 передается, значения по умолчанию сокета к
PF_INET.socketTypeТип сокета для создания. Если
protocolFamilyPF_INETиsocketTypeотрицательно или 0, значения по умолчанию типа сокета кSOCK_STREAM.protocolПротокол для сокета. Если
protocolFamilyPF_INETиprotocolотрицательно или 0, значения по умолчанию сокетного протокола кIPPROTO_TCPеслиsocketTypeSOCK_STREAMилиIPPROTO_UDPеслиsocketTypeSOCK_DGRAM.callBackTypesКомбинация битового «ИЛИ» типов действия сокета, которое должно вызвать
calloutбыть вызванным. Посмотрите Типы обратного вызова для возможных значений действия.calloutФункция для вызова, когда одно из действий, обозначенных
callBackTypesпроисходит.contextСтруктура, содержащая контекстную информацию для объекта CFSocket. Функция копирует информацию из структуры, таким образом, память, которой указывают
contextне должен сохраняться вне вызова функции. Может бытьNULL.Возвращаемое значение
Новый объект CFSocket, или
NULLесли произошла ошибка. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
CFSocketCreateConnectedToSocketSignature (_: _: _: _: _: _:) CFSocketCreateConnectedToSocketSignatureСоздает объект CFSocket и открывает соединение с удаленным сокетом.
Объявление
Swift
func CFSocketCreateConnectedToSocketSignature(_allocator: CFAllocator!, _signature: UnsafePointer<CFSocketSignature>, _callBackTypes: CFOptionFlags, _callout: CFSocketCallBack, _context: UnsafePointer<CFSocketContext>, _timeout: CFTimeInterval) -> CFSocket!Objective C
CFSocketRef CFSocketCreateConnectedToSocketSignature ( CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context, CFTimeInterval timeout );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.signatureA
CFSocketSignatureидентификация протокола связи и адреса, с которым должен соединиться объект CFSocket.callBackTypesКомбинация битового «ИЛИ» типов действия сокета, которое должно вызвать
calloutбыть вызванным. Посмотрите Типы обратного вызова для возможных значений действия.calloutФункция для вызова, когда одно из действий, обозначенных
callBackTypesпроисходит.contextСтруктура, содержащая контекстную информацию для объекта CFSocket. Функция копирует информацию из структуры, таким образом, память, которой указывают
contextне должен сохраняться вне вызова функции. Может бытьNULL.timeoutВремя для ожидания соединения для следования. Если отрицательная величина используется, эта функция не ожидает соединения и вместо этого позволяет попытке подключения произойти в фоновом режиме. Если
callBackTypesвключаетkCFSocketConnectCallBack, когда фоновая связь успешно выполнится или прервется, Вы получите обратный вызов.Возвращаемое значение
Новый объект CFSocket, или
NULLесли произошла ошибка. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Создает объект CFSocket для существующего ранее собственного сокета.
Объявление
Swift
func CFSocketCreateWithNative(_allocator: CFAllocator!, _sock: CFSocketNativeHandle, _callBackTypes: CFOptionFlags, _callout: CFSocketCallBack, _context: UnsafePointer<CFSocketContext>) -> CFSocket!Objective C
CFSocketRef CFSocketCreateWithNative ( CFAllocatorRef allocator, CFSocketNativeHandle sock, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.sockСобственный сокет, для которого можно создать объект CFSocket.
callBackTypesКомбинация битового «ИЛИ» типов действия сокета, которое должно вызвать
calloutбыть вызванным. Посмотрите Типы обратного вызова для возможных значений действия.calloutФункция для вызова, когда одно из действий, обозначенных
callBackTypesпроисходит.contextСтруктура, содержащая контекстную информацию для объекта CFSocket. Функция копирует информацию из структуры, таким образом, память, которой указывают
contextне должен сохраняться вне вызова функции. Может бытьNULL.Возвращаемое значение
Новый объект CFSocket, или
NULLесли произошла ошибка. Если объект CFSocket уже существует дляsock, функция возвращает существующий ранее объект вместо того, чтобы создать новый объект;context,callout, иcallBackTypesпараметры проигнорированы в этом случае. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Создает объект CFSocket использование информации от структуры CFSocketSignature.
Объявление
Swift
func CFSocketCreateWithSocketSignature(_allocator: CFAllocator!, _signature: UnsafePointer<CFSocketSignature>, _callBackTypes: CFOptionFlags, _callout: CFSocketCallBack, _context: UnsafePointer<CFSocketContext>) -> CFSocket!Objective C
CFSocketRef CFSocketCreateWithSocketSignature ( CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.signatureA
CFSocketSignatureидентификация протокола связи и адреса, с которым можно создать объект CFSocket.callBackTypesКомбинация битового «ИЛИ» типов действия сокета, которое должно вызвать
calloutбыть вызванным. Посмотрите Типы обратного вызова для возможных значений действия.calloutФункция для вызова, когда одно из действий, обозначенных
callBackTypesпроисходит.contextСтруктура, содержащая контекстную информацию для объекта CFSocket. Функция копирует информацию из структуры, таким образом, память, которой указывают
contextне должен сохраняться вне вызова функции. Может бытьNULL.Возвращаемое значение
Новый объект CFSocket, или
NULLесли произошла ошибка. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает локальный адрес объекта CFSocket.
Объявление
Swift
func CFSocketCopyAddress(_s: CFSocket!) -> CFData!Objective C
CFDataRef CFSocketCopyAddress ( CFSocketRef s );Параметры
sCFSocket возражают для исследования.
Возвращаемое значение
Локальный адрес, сохраненный как a
struct sockaddrподходящий для семейства протокола (struct sockaddr_inилиstruct sockaddr_in6, например) в объекте CFData,s. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает удаленный адрес, с которым подключен объект CFSocket.
Объявление
Swift
func CFSocketCopyPeerAddress(_s: CFSocket!) -> CFData!Objective C
CFDataRef CFSocketCopyPeerAddress ( CFSocketRef s );Параметры
sCFSocket возражают для исследования.
Возвращаемое значение
Удаленный адрес, сохраненный как a
struct sockaddrподходящий для семейства протокола (struct sockaddr_inилиstruct sockaddr_in6, например то) в объекте CFData, к которыйsсоединяется. Владение соблюдает Создать Правило.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Отключает функцию обратного вызова объекта CFSocket для определенных типов действия сокета.
Объявление
Swift
func CFSocketDisableCallBacks(_s: CFSocket!, _callBackTypes: CFOptionFlags)Objective C
void CFSocketDisableCallBacks ( CFSocketRef s, CFOptionFlags callBackTypes );Параметры
sCFSocket возражают для изменения.
callBackTypesКомбинация битового «ИЛИ» типов действия CFSocket, которые не должны вызывать функцию обратного вызова
sбыть вызванным. Посмотрите Типы обратного вызова для списка типов обратного вызова.Обсуждение
Если Вы больше не хотите определенные типы обратных вызовов, которые Вы запросили при создании
s, можно использовать эту функцию для временного отключения обратного вызова. ИспользоватьCFSocketEnableCallBacksповторно включить тип обратного вызова.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.2 и позже.
-
Включает функцию обратного вызова объекта CFSocket для определенных типов действия сокета.
Объявление
Swift
func CFSocketEnableCallBacks(_s: CFSocket!, _callBackTypes: CFOptionFlags)Objective C
void CFSocketEnableCallBacks ( CFSocketRef s, CFOptionFlags callBackTypes );Параметры
sCFSocket возражают для изменения.
callBackTypesКомбинация битового «ИЛИ» типов действия CFSocket, которые должны вызвать функцию обратного вызова
sбыть вызванным. Посмотрите Типы обратного вызова для списка типов обратного вызова.Обсуждение
Если тип обратного вызова автоматически не повторно включен, можно использовать эту функцию для включения обратного вызова (один раз).
Этот вызов не влияет, будет ли тип обратного вызова автоматически повторно включен в будущем; использовать
CFSocketSetSocketFlagsесли Вы хотите установить тип обратного вызова, который будет повторно включен автоматически.Обязательно включите только типы обратного вызова, которыми Ваш объект CFSocket фактически обладает и запросил при создании объекта CFSocket; результат включения других типов обратного вызова не определен.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.2 и позже.
-
Возвращает контекстную информацию для объекта CFSocket.
Объявление
Swift
func CFSocketGetContext(_s: CFSocket!, _context: UnsafeMutablePointer<CFSocketContext>)Objective C
void CFSocketGetContext ( CFSocketRef s, CFSocketContext *context );Параметры
sCFSocket возражают для исследования.
contextУказатель тот, на структуру, в который контекстная информация для
sдолжен быть скопирован. Возвращаемой информацией обычно является та же информация, которой Вы передалиCFSocketCreate,CFSocketCreateConnectedToSocketSignature,CFSocketCreateWithNative, илиCFSocketCreateWithSocketSignatureпри создании объекта CFSocket. Однако, еслиCFSocketCreateWithNativeвозвращенный кэшируемый CFSocket возражают вместо того, чтобы создать новый объект,contextзаполнено информацией от исходного объекта CFSocket вместо информации, которую Вы передали функции.Обсуждение
Номер версии контекста для CFSocket в настоящее время 0. Прежде, чем вызвать эту функцию, необходимо инициализировать
versionэлементcontextк 0.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает собственный сокет, связанный с объектом CFSocket.
Объявление
Swift
func CFSocketGetNative(_s: CFSocket!) -> CFSocketNativeHandleObjective C
CFSocketNativeHandle CFSocketGetNative ( CFSocketRef s );Параметры
sCFSocket возражают для исследования.
Возвращаемое значение
Собственный сокет связался с
s. Еслиsбыл лишен законной силы, возвраты-1,INVALID_SOCKET.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Флаги возвратов, управляющие определенными способами поведения объекта CFSocket.
Объявление
Swift
func CFSocketGetSocketFlags(_s: CFSocket!) -> CFOptionFlagsObjective C
CFOptionFlags CFSocketGetSocketFlags ( CFSocketRef s );Параметры
sCFSocket для исследования.
Возвращаемое значение
Комбинация битового «ИЛИ» флагов, управляющих поведением
s. См. Флаги CFSocket для списка доступных флагов.Обсуждение
Посмотрите
CFSocketSetSocketFlagsдля подробных данных, на какой флаги среднего значения CFSocket.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.2 и позже.
-
Связывает локальный адрес с объектом CFSocket и конфигурирует его для слушания.
Объявление
Swift
func CFSocketSetAddress(_s: CFSocket!, _address: CFData!) -> CFSocketErrorObjective C
CFSocketError CFSocketSetAddress ( CFSocketRef s, CFDataRef address );Параметры
sCFSocket возражают для изменения.
addressОбъект CFData, содержащий a
struct sockaddrподходящий для семейства протоколаs(struct sockaddr_inилиstruct sockaddr_in6, например). Этот объект данных используется только на время вызова функции.Возвращаемое значение
Код ошибки, указывающий успешность или неуспешность.
Обсуждение
Эта функция связывает сокет путем вызова
bind, и если сокет поддержки это, конфигурирует сокет для слушания путем вызоваlistenс задолженностью 256.Один раз
sсвязывается сaddress, В зависимости от протокола сокета другие процессы и компьютеры могут соединиться сs.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Флаги наборов, управляющие определенными способами поведения объекта CFSocket.
Объявление
Swift
func CFSocketSetSocketFlags(_s: CFSocket!, _flags: CFOptionFlags)Objective C
void CFSocketSetSocketFlags ( CFSocketRef s, CFOptionFlags flags );Параметры
sCFSocket возражают для изменения.
flagsКомбинация битового «ИЛИ» флагов, управляющих поведением
s. См. Флаги CFSocket для списка доступных флагов.Обсуждение
flagsпараметр управляет, повторно включены ли обратные вызовы данного типа автоматически после того, как они инициированы, и закрывается ли базовый собственный сокет когдаsлишен законной силы.Чтобы установить и очистить флаги, необходимо установить и биты маски в наборе флага, соответственно. Во-первых, вызвать
CFSocketGetSocketFlags, тогда измените возвращенное значение. Например:CFOptionFlags sockopt = CFSocketGetSocketFlags (mysock );/* Set the read callback to be automatically reenabled. */sockopt |= kCFSocketAutomaticallyReenableReadCallBack;/* Clear the close-on-invalidate flag. */sockopt &= ~kCFSocketCloseOnInvalidate;CFSocketSetSocketFlags(s, sockopt);
По умолчанию
kCFSocketReadCallBack,kCFSocketAcceptCallBack, иkCFSocketDataCallBackобратные вызовы автоматически повторно включены после того, как они будут инициированы, тогда какkCFSocketWriteCallBackобратные вызовы не;kCFSocketConnectCallBackобратные вызовы могут только произойти один раз, таким образом, им нельзя повторно включить.Если обратный вызов автоматически повторно включен, его вызывают каждый раз, когда условие становится истиной. Например, обратный вызов чтения вызывают, пока существуют данные по сокету, ожидающему, чтобы быть считанными. Если обратный вызов автоматически не повторно включен, то его вызывают точно один раз и не вызывают снова, пока Вы вручную не повторно включаете тот обратный вызов путем вызова
CFSocketEnableCallBacks.Будьте осторожны относительно автоматического перевключения обратные вызовы записи и чтение. Если Вы сделаете, то обратные вызовы будут неоднократно вызывать, пока сокет остается читаемым или перезаписываемым, соответственно.
Обязательно установите эти флаги только для типов обратного вызова, которыми фактически обладает Ваш объект CFSocket; результат установки их для других типов обратного вызова не определен.
По умолчанию базовый собственный сокет закрывается когда
sлишен законной силы. Отключить это, ясное (нуль)kCFSocketCloseOnInvalidateфлаг. Это может быть полезно, когда Вы хотите уничтожить CFSocket, возражают, но продолжают использовать базовый собственный сокет. Объект CFSocket должен все еще быть лишен законной силы, когда Вам больше не нужен он.Не закрывайтесь базовый собственный сокет, не лишая законной силы CFSocket возражают сначала.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.2 и позже.
-
Открывает соединение с удаленным сокетом.
Объявление
Swift
func CFSocketConnectToAddress(_s: CFSocket!, _address: CFData!, _timeout: CFTimeInterval) -> CFSocketErrorObjective C
CFSocketError CFSocketConnectToAddress ( CFSocketRef s, CFDataRef address, CFTimeInterval timeout );Параметры
sCFSocket возражают, с которым можно соединиться с
address.addressОбъект CFData, содержащий a
struct sockaddrподходящий для семейства протоколаs(struct sockaddr_inилиstruct sockaddr_in6, например), указывая удаленный адрес, с которым можно соединиться. Этот объект данных используется только на время вызова функции.timeoutВремя для ожидания соединения для следования. Если отрицательная величина используется, эта функция не ожидает соединения и вместо этого позволяет попытке подключения произойти в фоновом режиме. Если
sтребуемый akCFSocketConnectCallBack, когда фоновая связь успешно выполнится или прервется, Вы получите обратный вызов.Возвращаемое значение
Код ошибки, указывающий успешность или неуспешность попытки подключения.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Создает объект CFRunLoopSource для объекта CFSocket.
Объявление
Swift
func CFSocketCreateRunLoopSource(_allocator: CFAllocator!, _s: CFSocket!, _order: CFIndex) -> CFRunLoopSource!Objective C
CFRunLoopSourceRef CFSocketCreateRunLoopSource ( CFAllocatorRef allocator, CFSocketRef s, CFIndex order );Параметры
allocatorСредство выделения для использования для выделения памяти для нового объекта. Передача
NULLилиkCFAllocatorDefaultиспользовать текущее средство выделения по умолчанию.sCFSocket возражают, для которого можно создать источник цикла выполнения.
orderПоказатель приоритета, указывающий порядок, в котором обрабатываются выполненные источники цикла. Когда многократные источники цикла выполнения стреляют в единственную передачу через цикл выполнения, источники обрабатываются в увеличивающемся порядке этого параметра. Если цикл выполнения установлен обработать только один источник на цикл, только самый высокий приоритетный источник, тот с самым низким
orderоцените, обрабатывается.Возвращаемое значение
Новые CFRunLoopSource возражают для
s. Владение соблюдает Создать Правило.Обсуждение
Источник цикла выполнения автоматически не добавляется к циклу выполнения. Для добавления источника к циклу выполнения использовать
CFRunLoopAddSource.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает идентификатор типа для непрозрачного типа CFSocket.
Объявление
Swift
func CFSocketGetTypeID() -> CFTypeIDObjective C
CFTypeID CFSocketGetTypeID ( void );Возвращаемое значение
Идентификатор типа для непрозрачного типа CFSocket.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Лишает законной силы объект CFSocket, мешая ему отправить или больше получать сообщения.
Объявление
Swift
func CFSocketInvalidate(_s: CFSocket!)Objective C
void CFSocketInvalidate ( CFSocketRef s );Параметры
sCFSocket возражают для лишения законной силы.
Обсуждение
Необходимо всегда лишать законной силы объект сокета, когда Вы посредством использования его. Лишение законной силы объекта CFSocket препятствует объекту отправить или больше получать сообщения, но не выпускает сам объект сокета.
Если источник цикла выполнения создавался для
s, источник цикла выполнения лишен законной силы.Если обратный вызов выпуска был указан в
CFSocketContextобъект, это вызовы функции это для выпуска объекта вinfoполе (который был предоставлен когдаsсоздавался).По умолчанию этот вызов закрывает базовый сокет. Если Вы явно очистились
kCFSocketCloseOnInvalidateфлаг путем вызоваCFSocketSetSocketFlags, необходимо закрыть сокет сами после вызывания этой функции.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Возвращает булево значение, указывающее, допустим ли объект CFSocket и в состоянии отправить или получить сообщения.
Объявление
Swift
func CFSocketIsValid(_s: CFSocket!) -> BooleanObjective C
Boolean CFSocketIsValid ( CFSocketRef s );Параметры
sCFSocket возражают для исследования.
Возвращаемое значение
trueеслиsможет использоваться для коммуникации, иначеfalse.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Отправляет данные по объекту CFSocket.
Объявление
Swift
func CFSocketSendData(_s: CFSocket!, _address: CFData!, _data: CFData!, _timeout: CFTimeInterval) -> CFSocketErrorObjective C
CFSocketError CFSocketSendData ( CFSocketRef s, CFDataRef address, CFDataRef data, CFTimeInterval timeout );Параметры
sCFSocket возражают для использования.
addressАдрес, сохраненный как a
struct sockaddrподходящий для семейства протокола (struct sockaddr_inилиstruct sockaddr_in6, например) в объекте CFData, в который можно отправить содержаниеdata. ЕслиNULL, данные отправляются в адрес к которыйsуже соединяется. Этот объект данных используется только на время вызова функции.dataДанные для отправки.
timeoutВремя для ожидания данных, которые будут отправлены.
Возвращаемое значение
Код ошибки, указывающий успешность или неуспешность.
Обсуждение
Эта функция устанавливает отправить тайм-аут базового сокета (
SO_SNDTIMEOопция вSOL_SOCKETуровень), затем вызываетsend(илиsendtoесли Вы обеспечили адрес) с предоставленными данными.Эта функция не предпринимает попытки поставить данные в очередь для поставки вне организации очередей, предоставленной самим буфером сокета. Это означает:
Если возвращается эта функция
kCFSocketSuccess, тогда к тому времени, когда это возвращается, данные были поставлены в очередь в буфере сокета для поставки.Если буфер сокета полон, и тайм-аут является ненулевым, функция может возвратить ошибку. Если это происходит, приложение должно ожидать буфера сокета для имения достаточного количества пространства в наличии для записи прежде, чем вызвать эту функцию снова.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Когда определенные типы действия имеют место на объекте CFSocket, обратный вызов вызвал.
Объявление
Swift
typealias CFSocketCallBack = CFunctionPointer<((CFSocket!, CFSocketCallBackType, CFData!, UnsafePointer<Void>, UnsafeMutablePointer<Void>) -> Void)>Objective C
typedef void (*CFSocketCallBack) ( CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef address, const void *data, void *info );Параметры
sCFSocket возражают, что испытал некоторое действие.
callbackTypeТип действия обнаруживается.
addressОбъект CFData содержание содержания a
struct sockaddrподходящий для семейства протоколаs(struct sockaddr_inилиstruct sockaddr_in6, например то), идентифицируя удаленный адрес, к которыйsсоединяется. Это значениеNULLза исключениемkCFSocketAcceptCallBackиkCFSocketDataCallBackобратные вызовы.dataДанные, подходящие для типа обратного вызова. Для a
kCFSocketConnectCallBackэто перестало работать в фоновом режиме, это - указатель наSInt32код ошибки; для akCFSocketAcceptCallBack, это - указатель на aCFSocketNativeHandle; или для akCFSocketDataCallBack, это - объект CFData, содержащий входящие данные. Во всех других случаях этоNULL.infoinfoэлементCFSocketContextструктура, использовавшаяся при создании объекта CFSocket.Обсуждение
Вы указываете этот обратный вызов при создании объекта CFSocket с
CFSocketCreate,CFSocketCreateConnectedToSocketSignature,CFSocketCreateWithNative, илиCFSocketCreateWithSocketSignature.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Структура, содержащая определенные с помощью программы данные и обратные вызовы, с которыми можно сконфигурировать поведение объекта CFSocket.
Объявление
Swift
struct CFSocketContext { 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
struct CFSocketContext { CFIndex version; void *info; CFAllocatorRetainCallBack retain; CFAllocatorReleaseCallBack release; CFAllocatorCopyDescriptionCallBack copyDescription; }; typedef struct CFSocketContext CFSocketContext;Поля
versionНомер версии структуры. Должен быть
0.infoПроизвольный указатель на определенные с помощью программы данные, которые могут быть связаны с объектом CFSocket во время создания. Этот указатель передается всем обратным вызовам, определенным в контексте.
retainСохранить обратный вызов для Вашего определенного с помощью программы
infoуказатель. Может бытьNULL.releaseОбратный вызов выпуска для Вашего определенного с помощью программы
infoуказатель. Может бытьNULL.copyDescriptionОбратный вызов описания копии для Вашего определенного с помощью программы
infoуказатель. Может бытьNULL.Доступность
Доступный в OS X v10.0 и позже.
-
Введите для специфичного для платформы собственного дескриптора сокета.
Объявление
Swift
typealias CFSocketNativeHandle = Int32Objective C
typedef int CFSocketNativeHandle;Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Ссылка на объект CFSocket.
Объявление
Swift
typealias CFSocketRef = CFSocketObjective C
typedef struct __CFSocket *CFSocketRef;Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
Структура, полностью указывающая протокол связи и адрес соединения объекта CFSocket.
Объявление
Swift
struct CFSocketSignature { var protocolFamily: Int32 var socketType: Int32 var `protocol`: Int32 var address: Unmanaged<CFData>! }Objective C
struct CFSocketSignature { SInt32 protocolFamily; SInt32 socketType; SInt32 protocol; CFDataRef address; }; typedef struct CFSocketSignature CFSocketSignature;Поля
protocolFamilyСемейство протокола сокета.
socketTypeТип сокета сокета.
protocolТип протокола сокета.
addressОбъект CFData содержание содержания a
struct sockaddrподходящий для данного семейства протокола (struct sockaddr_inилиstruct sockaddr_in6, например), идентифицируя адрес сокета.Доступность
Доступный в OS X v10.0 и позже.
-
Типы действия сокета, которое может заставить функцию обратного вызова объекта CFSocket быть вызванной.
Объявление
Swift
struct CFSocketCallBackType : RawOptionSetType { init(_rawValue: CFOptionFlags) init(rawValuerawValue: CFOptionFlags) static var NoCallBack: CFSocketCallBackType { get } static var ReadCallBack: CFSocketCallBackType { get } static var AcceptCallBack: CFSocketCallBackType { get } static var DataCallBack: CFSocketCallBackType { get } static var ConnectCallBack: CFSocketCallBackType { get } static var WriteCallBack: CFSocketCallBackType { get } }Objective C
enum CFSocketCallBackType { kCFSocketNoCallBack = 0, kCFSocketReadCallBack = 1, kCFSocketAcceptCallBack = 2, kCFSocketDataCallBack = 3, kCFSocketConnectCallBack = 4, kCFSocketWriteCallBack = 8 }; typedef enum CFSocketCallBackType CFSocketCallBackType;Константы
-
NoCallBackkCFSocketNoCallBackНикакой обратный вызов не должен быть сделан ни для какого действия.
Доступный в OS X v10.0 и позже.
-
ReadCallBackkCFSocketReadCallBackОбратный вызов вызывают, когда данные доступны, чтобы быть считанными, или новое соединение ожидает, чтобы быть принятым. Данные автоматически не считаны; обратный вызов должен считать сами данные.
Доступный в OS X v10.0 и позже.
-
AcceptCallBackkCFSocketAcceptCallBackНовые соединения будут автоматически приняты, и обратный вызов вызывают с параметром данных, являющимся указателем на a
CFSocketNativeHandleиз дочернего сокета. Этот обратный вызов применим только с сокетами слушания.Доступный в OS X v10.0 и позже.
-
DataCallBackkCFSocketDataCallBackВходящие данные будут считаны в блоках в фоновом режиме, и обратный вызов вызывают с параметром данных, являющимся объектом CFData, содержащим данные чтения.
Доступный в OS X v10.0 и позже.
-
ConnectCallBackkCFSocketConnectCallBackЕсли попытка подключения сделана в фоновом режиме путем вызова
CFSocketConnectToAddressилиCFSocketCreateConnectedToSocketSignatureкогда подключение заканчивается, с отрицательным значением тайм-аута сделан этот тип обратного вызова. В этом случае параметр данных такжеNULLили указатель наSInt32код ошибки, если подключение перестало работать. Этот обратный вызов никогда не будет отправляться несколько раз за данным сокетом.Доступный в OS X v10.0 и позже.
-
WriteCallBackkCFSocketWriteCallBackКогда сокет перезаписываем, обратный вызов вызывают. Этот тип обратного вызова может быть полезным, когда большие объемы данных отправляются быстро по сокету, и Вы хотите уведомление, когда существует пространство в буферах ядра для большего количества данных.
Доступный в OS X v10.2 и позже.
Обсуждение
Типы обратного вызова, для которых сделан обратный вызов, определяются, когда объект CFSocket создается, такой как с
CFSocketCreate, или позже сCFSocketEnableCallBacksиCFSocketDisableCallBacks.kCFSocketReadCallBack,kCFSocketAcceptCallBack, иkCFSocketDataCallBackобратные вызовы являются взаимоисключающими.Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
-
Флаги, которые могут быть установлены на объекте CFSocket управлять его поведением.
Объявление
Swift
var kCFSocketAutomaticallyReenableReadCallBack: Int { get } var kCFSocketAutomaticallyReenableAcceptCallBack: Int { get } var kCFSocketAutomaticallyReenableDataCallBack: Int { get } var kCFSocketAutomaticallyReenableWriteCallBack: Int { get } var kCFSocketLeaveErrors: Int { get } var kCFSocketCloseOnInvalidate: Int { get }Objective C
enum { kCFSocketAutomaticallyReenableReadCallBack = 1, kCFSocketAutomaticallyReenableAcceptCallBack = 2, kCFSocketAutomaticallyReenableDataCallBack = 3, kCFSocketAutomaticallyReenableWriteCallBack = 8, kCFSocketLeaveErrors = 64, kCFSocketCloseOnInvalidate = 128 };Константы
-
kCFSocketAutomaticallyReenableReadCallBackkCFSocketAutomaticallyReenableReadCallBackКогда включено с помощью
CFSocketSetSocketFlags, обратный вызов чтения вызывают каждый раз, когда сокеты имеют данные, которые будут считаны. Когда отключено, обратный вызов чтения вызывают только один раз в следующий раз, когда данные доступны. Обратный вызов чтения автоматически повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketAutomaticallyReenableAcceptCallBackkCFSocketAutomaticallyReenableAcceptCallBackКогда включено с помощью
CFSocketSetSocketFlags, принять обратный вызов вызывают каждый раз, когда кто-то соединяется с Вашим сокетом. Когда отключено, принять обратный вызов вызывают только один раз в следующий раз, когда новое сокетное соединение принято. Принять обратный вызов автоматически повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketAutomaticallyReenableDataCallBackkCFSocketAutomaticallyReenableDataCallBackКогда включено с помощью
CFSocketSetSocketFlags, обратный вызов данных вызывают каждый раз, когда сокет считал некоторые данные. Когда отключено, обратный вызов данных вызывают только один раз в следующий раз, когда данные считаны. Обратный вызов данных автоматически повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketAutomaticallyReenableWriteCallBackkCFSocketAutomaticallyReenableWriteCallBackКогда включено с помощью
CFSocketSetSocketFlags, обратный вызов записи вызывают каждый раз, когда больше данных может быть записано в сокет. Когда отключено, обратный вызов записи вызывают только в следующий раз, когда данные могут быть записаны. Обратный вызов записи автоматически не повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketLeaveErrorskCFSocketLeaveErrorsОбычно, CFNetwork складывают вызовы
getsockopt(2) Mac OS X Developer Tools Manual Pageсчитать код ошибки из сокета до вызова Вашего обратного вызова записи. Это также имеет эффект очистки любых незаконченных ошибок на сокете.Если этот флаг установлен, этот вызов пропускается так, чтобы можно было проверить на определенные ошибки сокета в обратном вызове записи.
Доступный в OS X v10.5 и позже.
-
kCFSocketCloseOnInvalidatekCFSocketCloseOnInvalidateКогда включено с помощью
CFSocketSetSocketFlags, когда объект CFSocket лишен законной силы, собственный сокет, связанный с объектом CFSocket, закрывается. Когда отключено, собственный сокет остается открытым. Эта опция включена по умолчанию.Доступный в OS X v10.2 и позже.
Обсуждение
Флаги для объекта CFSocket установлены с
CFSocketSetSocketFlags. Чтобы сразу включить или отключить обратный вызов, использоватьCFSocketEnableCallBacksиCFSocketDisableCallBacks. -
-
Коды ошибки для многих функций CFSocket.
Объявление
Swift
enum CFSocketError : CFIndex { case Success case Error case Timeout }Objective C
enum CFSocketError { kCFSocketSuccess = 0, kCFSocketError = -1, kCFSocketTimeout = -2 }; typedef enum CFSocketError CFSocketError;Константы
-
SuccesskCFSocketSuccessРабота сокета успешно выполнилась.
Доступный в OS X v10.0 и позже.
-
ErrorkCFSocketErrorРабота сокета перестала работать.
Доступный в OS X v10.0 и позже.
-
TimeoutkCFSocketTimeoutРабота сокета испытала таймаут.
Доступный в OS X v10.0 и позже.
Оператор импорта
Objective C
@import CoreFoundation;Swift
import CoreFoundationДоступность
Доступный в OS X v10.0 и позже.
-
