Ссылка 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
Тип сокета для создания. Если
protocolFamily
PF_INET
иsocketType
отрицательно или 0, значения по умолчанию типа сокета кSOCK_STREAM
.protocol
Протокол для сокета. Если
protocolFamily
PF_INET
иprotocol
отрицательно или 0, значения по умолчанию сокетного протокола кIPPROTO_TCP
еслиsocketType
SOCK_STREAM
илиIPPROTO_UDP
еслиsocketType
SOCK_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
использовать текущее средство выделения по умолчанию.signature
A
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
использовать текущее средство выделения по умолчанию.signature
A
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 );
Параметры
s
CFSocket возражают для исследования.
Возвращаемое значение
Локальный адрес, сохраненный как 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 );
Параметры
s
CFSocket возражают для исследования.
Возвращаемое значение
Удаленный адрес, сохраненный как 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 );
Параметры
s
CFSocket возражают для изменения.
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 );
Параметры
s
CFSocket возражают для изменения.
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 );
Параметры
s
CFSocket возражают для исследования.
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 );
Параметры
s
CFSocket возражают для исследования.
Возвращаемое значение
Собственный сокет связался с
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 );
Параметры
s
CFSocket для исследования.
Возвращаемое значение
Комбинация битового «ИЛИ» флагов, управляющих поведением
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 );
Параметры
s
CFSocket возражают для изменения.
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 );
Параметры
s
CFSocket возражают для изменения.
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 );
Параметры
s
CFSocket возражают, с которым можно соединиться с
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
использовать текущее средство выделения по умолчанию.s
CFSocket возражают, для которого можно создать источник цикла выполнения.
order
Показатель приоритета, указывающий порядок, в котором обрабатываются выполненные источники цикла. Когда многократные источники цикла выполнения стреляют в единственную передачу через цикл выполнения, источники обрабатываются в увеличивающемся порядке этого параметра. Если цикл выполнения установлен обработать только один источник на цикл, только самый высокий приоритетный источник, тот с самым низким
order
оцените, обрабатывается.Возвращаемое значение
Новые CFRunLoopSource возражают для
s
. Владение соблюдает Создать Правило.Обсуждение
Источник цикла выполнения автоматически не добавляется к циклу выполнения. Для добавления источника к циклу выполнения использовать
CFRunLoopAddSource
.Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Возвращает идентификатор типа для непрозрачного типа CFSocket.
Объявление
Swift
func CFSocketGetTypeID() -> CFTypeID
Objective 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 );
Параметры
s
CFSocket возражают для лишения законной силы.
Обсуждение
Необходимо всегда лишать законной силы объект сокета, когда Вы посредством использования его. Лишение законной силы объекта 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 );
Параметры
s
CFSocket возражают для исследования.
Возвращаемое значение
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 );
Параметры
s
CFSocket возражают для использования.
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 );
Параметры
s
CFSocket возражают, что испытал некоторое действие.
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
.info
info
элемент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 = Int32
Objective C
typedef int CFSocketNativeHandle;
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-
Ссылка на объект CFSocket.
Объявление
Swift
typealias CFSocketRef = CFSocket
Objective 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;
Константы
-
NoCallBack
kCFSocketNoCallBack
Никакой обратный вызов не должен быть сделан ни для какого действия.
Доступный в OS X v10.0 и позже.
-
ReadCallBack
kCFSocketReadCallBack
Обратный вызов вызывают, когда данные доступны, чтобы быть считанными, или новое соединение ожидает, чтобы быть принятым. Данные автоматически не считаны; обратный вызов должен считать сами данные.
Доступный в OS X v10.0 и позже.
-
AcceptCallBack
kCFSocketAcceptCallBack
Новые соединения будут автоматически приняты, и обратный вызов вызывают с параметром данных, являющимся указателем на a
CFSocketNativeHandle
из дочернего сокета. Этот обратный вызов применим только с сокетами слушания.Доступный в OS X v10.0 и позже.
-
DataCallBack
kCFSocketDataCallBack
Входящие данные будут считаны в блоках в фоновом режиме, и обратный вызов вызывают с параметром данных, являющимся объектом CFData, содержащим данные чтения.
Доступный в OS X v10.0 и позже.
-
ConnectCallBack
kCFSocketConnectCallBack
Если попытка подключения сделана в фоновом режиме путем вызова
CFSocketConnectToAddress
илиCFSocketCreateConnectedToSocketSignature
когда подключение заканчивается, с отрицательным значением тайм-аута сделан этот тип обратного вызова. В этом случае параметр данных такжеNULL
или указатель наSInt32
код ошибки, если подключение перестало работать. Этот обратный вызов никогда не будет отправляться несколько раз за данным сокетом.Доступный в OS X v10.0 и позже.
-
WriteCallBack
kCFSocketWriteCallBack
Когда сокет перезаписываем, обратный вызов вызывают. Этот тип обратного вызова может быть полезным, когда большие объемы данных отправляются быстро по сокету, и Вы хотите уведомление, когда существует пространство в буферах ядра для большего количества данных.
Доступный в 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 };
Константы
-
kCFSocketAutomaticallyReenableReadCallBack
kCFSocketAutomaticallyReenableReadCallBack
Когда включено с помощью
CFSocketSetSocketFlags
, обратный вызов чтения вызывают каждый раз, когда сокеты имеют данные, которые будут считаны. Когда отключено, обратный вызов чтения вызывают только один раз в следующий раз, когда данные доступны. Обратный вызов чтения автоматически повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketAutomaticallyReenableAcceptCallBack
kCFSocketAutomaticallyReenableAcceptCallBack
Когда включено с помощью
CFSocketSetSocketFlags
, принять обратный вызов вызывают каждый раз, когда кто-то соединяется с Вашим сокетом. Когда отключено, принять обратный вызов вызывают только один раз в следующий раз, когда новое сокетное соединение принято. Принять обратный вызов автоматически повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketAutomaticallyReenableDataCallBack
kCFSocketAutomaticallyReenableDataCallBack
Когда включено с помощью
CFSocketSetSocketFlags
, обратный вызов данных вызывают каждый раз, когда сокет считал некоторые данные. Когда отключено, обратный вызов данных вызывают только один раз в следующий раз, когда данные считаны. Обратный вызов данных автоматически повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketAutomaticallyReenableWriteCallBack
kCFSocketAutomaticallyReenableWriteCallBack
Когда включено с помощью
CFSocketSetSocketFlags
, обратный вызов записи вызывают каждый раз, когда больше данных может быть записано в сокет. Когда отключено, обратный вызов записи вызывают только в следующий раз, когда данные могут быть записаны. Обратный вызов записи автоматически не повторно включен по умолчанию.Доступный в OS X v10.2 и позже.
-
kCFSocketLeaveErrors
kCFSocketLeaveErrors
Обычно, CFNetwork складывают вызовы
getsockopt(2) Mac OS X Developer Tools Manual Page
считать код ошибки из сокета до вызова Вашего обратного вызова записи. Это также имеет эффект очистки любых незаконченных ошибок на сокете.Если этот флаг установлен, этот вызов пропускается так, чтобы можно было проверить на определенные ошибки сокета в обратном вызове записи.
Доступный в OS X v10.5 и позже.
-
kCFSocketCloseOnInvalidate
kCFSocketCloseOnInvalidate
Когда включено с помощью
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;
Константы
-
Success
kCFSocketSuccess
Работа сокета успешно выполнилась.
Доступный в OS X v10.0 и позже.
-
Error
kCFSocketError
Работа сокета перестала работать.
Доступный в OS X v10.0 и позже.
-
Timeout
kCFSocketTimeout
Работа сокета испытала таймаут.
Доступный в OS X v10.0 и позже.
Оператор импорта
Objective C
@import CoreFoundation;
Swift
import CoreFoundation
Доступность
Доступный в OS X v10.0 и позже.
-