Mac Developer Library

Developer

CoreFoundation Framework Reference CFSocket Reference

Options
Deployment Target:

On This Page
Language:

CFSocket Reference

A CFSocket is a communications channel implemented with a BSD socket.

For most uses of this API, you will need to include three headers:

  • #import <CoreFoundation/CoreFoundation.h> #include <sys/socket.h> #include <netinet/in.h>

CFSocket can be created from scratch with CFSocketCreate and CFSocketCreateWithSocketSignature. CFSocket objects can also be created to wrap an existing BSD socket by calling CFSocketCreateWithNative. Finally, you can create a CFSocket and connect simultaneously to a remote host by calling CFSocketCreateConnectedToSocketSignature.

To listen for messages, you need to create a run loop source with CFSocketCreateRunLoopSource and add it to a run loop with CFRunLoopAddSource. You can select the types of socket activities, such as connection attempts or data arrivals, that cause the source to fire and invoke your CFSocket’s callback function. To send data, you store the data in a CFData and call CFSocketSendData.

Unlike Mach and message ports, sockets support communication over a network.

Functions

  • Creates a CFSocket object of a specified protocol and type.

    Declaration

    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 );

    Parameters

    allocator

    The allocator to use to allocate memory for the new object. Pass NULL or kCFAllocatorDefault to use the current default allocator.

    protocolFamily

    The protocol family for the socket. If negative or 0 is passed, the socket defaults to PF_INET.

    socketType

    The socket type to create. If protocolFamily is PF_INET and socketType is negative or 0, the socket type defaults to SOCK_STREAM.

    protocol

    The protocol for the socket. If protocolFamily is PF_INET and protocol is negative or 0, the socket protocol defaults to IPPROTO_TCP if socketType is SOCK_STREAM or IPPROTO_UDP if socketType is SOCK_DGRAM.

    callBackTypes

    A bitwise-OR combination of the types of socket activity that should cause callout to be called. See Callback Types for the possible activity values.

    callout

    The function to call when one of the activities indicated by callBackTypes occurs.

    context

    A structure holding contextual information for the CFSocket object. The function copies the information out of the structure, so the memory pointed to by context does not need to persist beyond the function call. Can be NULL.

    Return Value

    The new CFSocket object, or NULL if an error occurred. Ownership follows the Create Rule.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Creates a CFSocket object and opens a connection to a remote socket.

    Declaration

    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 );

    Parameters

    allocator

    The allocator to use to allocate memory for the new object. Pass NULL or kCFAllocatorDefault to use the current default allocator.

    signature

    A CFSocketSignature identifying the communication protocol and address to which the CFSocket object should connect.

    callBackTypes

    A bitwise-OR combination of the types of socket activity that should cause callout to be called. See Callback Types for the possible activity values.

    callout

    The function to call when one of the activities indicated by callBackTypes occurs.

    context

    A structure holding contextual information for the CFSocket object. The function copies the information out of the structure, so the memory pointed to by context does not need to persist beyond the function call. Can be NULL.

    timeout

    The time to wait for a connection to succeed. If a negative value is used, this function does not wait for the connection and instead lets the connection attempt happen in the background. If callBackTypes includes kCFSocketConnectCallBack, you will receive a callback when the background connection succeeds or fails.

    Return Value

    The new CFSocket object, or NULL if an error occurred. Ownership follows the Create Rule.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Creates a CFSocket object for a pre-existing native socket.

    Declaration

    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 );

    Parameters

    allocator

    The allocator to use to allocate memory for the new object. Pass NULL or kCFAllocatorDefault to use the current default allocator.

    sock

    The native socket for which to create a CFSocket object.

    callBackTypes

    A bitwise-OR combination of the types of socket activity that should cause callout to be called. See Callback Types for the possible activity values.

    callout

    The function to call when one of the activities indicated by callBackTypes occurs.

    context

    A structure holding contextual information for the CFSocket object. The function copies the information out of the structure, so the memory pointed to by context does not need to persist beyond the function call. Can be NULL.

    Return Value

    The new CFSocket object, or NULL if an error occurred. If a CFSocket object already exists for sock, the function returns the pre-existing object instead of creating a new object; the context, callout, and callBackTypes parameters are ignored in this case. Ownership follows the Create Rule.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Creates a CFSocket object using information from a CFSocketSignature structure.

    Declaration

    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 );

    Parameters

    allocator

    The allocator to use to allocate memory for the new object. Pass NULL or kCFAllocatorDefault to use the current default allocator.

    signature

    A CFSocketSignature identifying the communication protocol and address with which to create the CFSocket object.

    callBackTypes

    A bitwise-OR combination of the types of socket activity that should cause callout to be called. See Callback Types for the possible activity values.

    callout

    The function to call when one of the activities indicated by callBackTypes occurs.

    context

    A structure holding contextual information for the CFSocket object. The function copies the information out of the structure, so the memory pointed to by context does not need to persist beyond the function call. Can be NULL.

    Return Value

    The new CFSocket object, or NULL if an error occurred. Ownership follows the Create Rule.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Returns the local address of a CFSocket object.

    Declaration

    Swift

    func CFSocketCopyAddress(_ s: CFSocket!) -> CFData!

    Objective-C

    CFDataRef CFSocketCopyAddress ( CFSocketRef s );

    Parameters

    s

    The CFSocket object to examine.

    Return Value

    The local address, stored as a struct sockaddr appropriate for the protocol family (struct sockaddr_in or struct sockaddr_in6, for example) in a CFData object, of s. Ownership follows the Create Rule.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Returns the remote address to which a CFSocket object is connected.

    Declaration

    Swift

    func CFSocketCopyPeerAddress(_ s: CFSocket!) -> CFData!

    Objective-C

    CFDataRef CFSocketCopyPeerAddress ( CFSocketRef s );

    Parameters

    s

    The CFSocket object to examine.

    Return Value

    The remote address, stored as a struct sockaddr appropriate for the protocol family (struct sockaddr_in or struct sockaddr_in6, for example) in a CFData object, to which s is connected. Ownership follows the Create Rule.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Disables the callback function of a CFSocket object for certain types of socket activity.

    Declaration

    Swift

    func CFSocketDisableCallBacks(_ s: CFSocket!, _ callBackTypes: CFOptionFlags)

    Objective-C

    void CFSocketDisableCallBacks ( CFSocketRef s, CFOptionFlags callBackTypes );

    Parameters

    s

    The CFSocket object to modify.

    callBackTypes

    A bitwise-OR combination of CFSocket activity types that should not cause the callback function of s to be called. See Callback Types for a list of callback types.

    Discussion

    If you no longer want certain types of callbacks that you requested when creating s, you can use this function to temporarily disable the callback. Use CFSocketEnableCallBacks to reenable a callback type.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.2 and later.

  • Enables the callback function of a CFSocket object for certain types of socket activity.

    Declaration

    Swift

    func CFSocketEnableCallBacks(_ s: CFSocket!, _ callBackTypes: CFOptionFlags)

    Objective-C

    void CFSocketEnableCallBacks ( CFSocketRef s, CFOptionFlags callBackTypes );

    Parameters

    s

    The CFSocket object to modify.

    callBackTypes

    A bitwise-OR combination of CFSocket activity types that should cause the callback function of s to be called. See Callback Types for a list of callback types.

    Discussion

    If a callback type is not automatically reenabled, you can use this function to enable the callback (once).

    This call does not affect whether the callback type will be automatically reenabled in the future; use CFSocketSetSocketFlags if you want to set a callback type to be reenabled automatically.

    Be sure to enable only callback types that your CFSocket object actually possesses and has requested when creating the CFSocket object; the result of enabling other callback types is undefined.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.2 and later.

  • Returns the context information for a CFSocket object.

    Declaration

    Swift

    func CFSocketGetContext(_ s: CFSocket!, _ context: UnsafeMutablePointer<CFSocketContext>)

    Objective-C

    void CFSocketGetContext ( CFSocketRef s, CFSocketContext *context );

    Parameters

    s

    The CFSocket object to examine.

    context

    A pointer to the structure into which the context information for s is to be copied. The information being returned is usually the same information you passed to CFSocketCreate, CFSocketCreateConnectedToSocketSignature, CFSocketCreateWithNative, or CFSocketCreateWithSocketSignature when creating the CFSocket object. However, if CFSocketCreateWithNative returned a cached CFSocket object instead of creating a new object, context is filled with information from the original CFSocket object instead of the information you passed to the function.

    Discussion

    The context version number for CFSocket is currently 0. Before calling this function, you need to initialize the version member of context to 0.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Returns the native socket associated with a CFSocket object.

    Declaration

    Swift

    func CFSocketGetNative(_ s: CFSocket!) -> CFSocketNativeHandle

    Objective-C

    CFSocketNativeHandle CFSocketGetNative ( CFSocketRef s );

    Parameters

    s

    The CFSocket object to examine.

    Return Value

    The native socket associated with s. If s has been invalidated, returns -1, INVALID_SOCKET.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Returns flags that control certain behaviors of a CFSocket object.

    Declaration

    Swift

    func CFSocketGetSocketFlags(_ s: CFSocket!) -> CFOptionFlags

    Objective-C

    CFOptionFlags CFSocketGetSocketFlags ( CFSocketRef s );

    Parameters

    s

    The CFSocket to examine.

    Return Value

    A bitwise-OR combination of flags controlling the behavior of s. See CFSocket Flags for the list of available flags.

    Discussion

    See CFSocketSetSocketFlags for details on what the flags of a CFSocket mean.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.2 and later.

  • Binds a local address to a CFSocket object and configures it for listening.

    Declaration

    Swift

    func CFSocketSetAddress(_ s: CFSocket!, _ address: CFData!) -> CFSocketError

    Objective-C

    CFSocketError CFSocketSetAddress ( CFSocketRef s, CFDataRef address );

    Parameters

    s

    The CFSocket object to modify.

    address

    A CFData object containing a struct sockaddr appropriate for the protocol family of s (struct sockaddr_in or struct sockaddr_in6, for example). This data object is used only for the duration of the function call.

    Return Value

    An error code indicating success or failure.

    Discussion

    This function binds the socket by calling bind, and if the socket supports it, configures the socket for listening by calling listen with a backlog of 256.

    Once s is bound to address, depending on the socket’s protocol, other processes and computers can connect to s.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Sets flags that control certain behaviors of a CFSocket object.

    Declaration

    Swift

    func CFSocketSetSocketFlags(_ s: CFSocket!, _ flags: CFOptionFlags)

    Objective-C

    void CFSocketSetSocketFlags ( CFSocketRef s, CFOptionFlags flags );

    Parameters

    s

    The CFSocket object to modify.

    flags

    A bitwise-OR combination of flags controlling the behavior of s. See CFSocket Flags for the list of available flags.

    Discussion

    The flags argument controls whether callbacks of a given type are automatically reenabled after they are triggered, and whether the underlying native socket is closed when s is invalidated.

    To set and clear flags, you must set and mask bits in the flag set, respectively. First, call CFSocketGetSocketFlags, then modify the value returned. For example:

    • 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);

    By default kCFSocketReadCallBack, kCFSocketAcceptCallBack, and kCFSocketDataCallBack callbacks are automatically reenabled after they are triggered, whereas kCFSocketWriteCallBack callbacks are not; kCFSocketConnectCallBack callbacks can only occur once, so they cannot be reenabled.

    If a callback is automatically reenabled, it is called every time the condition becomes true. For example, a read callback is called as long as there is data on the socket waiting to be read. If a callback is not automatically reenabled, then it gets called exactly once, and is not called again until you manually reenable that callback by calling CFSocketEnableCallBacks.

    Be careful about automatically reenabling read and write callbacks. If you do, the callbacks will be called repeatedly as long as the socket remains readable or writable, respectively.

    Be sure to set these flags only for callback types that your CFSocket object actually possesses; the result of setting them for other callback types is undefined.

    By default the underlying native socket is closed when s is invalidated. To disable that, clear (zero) the kCFSocketCloseOnInvalidate flag. This can be useful when you want to destroy a CFSocket object but continue to use the underlying native socket. The CFSocket object must still be invalidated when you no longer need it.

    Do not close the underlying native socket without invalidating the CFSocket object first.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.2 and later.

  • Opens a connection to a remote socket.

    Declaration

    Swift

    func CFSocketConnectToAddress(_ s: CFSocket!, _ address: CFData!, _ timeout: CFTimeInterval) -> CFSocketError

    Objective-C

    CFSocketError CFSocketConnectToAddress ( CFSocketRef s, CFDataRef address, CFTimeInterval timeout );

    Parameters

    s

    The CFSocket object with which to connect to address.

    address

    A CFData object containing a struct sockaddr appropriate for the protocol family of s (struct sockaddr_in or struct sockaddr_in6, for example), indicating the remote address to which to connect. This data object is used only for the duration of the function call.

    timeout

    The time to wait for a connection to succeed. If a negative value is used, this function does not wait for the connection and instead lets the connection attempt happen in the background. If s requested a kCFSocketConnectCallBack, you will receive a callback when the background connection succeeds or fails.

    Return Value

    An error code indicating success or failure of the connection attempt.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Creates a CFRunLoopSource object for a CFSocket object.

    Declaration

    Swift

    func CFSocketCreateRunLoopSource(_ allocator: CFAllocator!, _ s: CFSocket!, _ order: CFIndex) -> CFRunLoopSource!

    Objective-C

    CFRunLoopSourceRef CFSocketCreateRunLoopSource ( CFAllocatorRef allocator, CFSocketRef s, CFIndex order );

    Parameters

    allocator

    The allocator to use to allocate memory for the new object. Pass NULL or kCFAllocatorDefault to use the current default allocator.

    s

    The CFSocket object for which to create a run loop source.

    order

    A priority index indicating the order in which run loop sources are processed. When multiple run loop sources are firing in a single pass through the run loop, the sources are processed in increasing order of this parameter. If the run loop is set to process only one source per loop, only the highest priority source, the one with the lowest order value, is processed.

    Return Value

    The new CFRunLoopSource object for s. Ownership follows the Create Rule.

    Discussion

    The run loop source is not automatically added to a run loop. To add the source to a run loop, use CFRunLoopAddSource.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Returns the type identifier for the CFSocket opaque type.

    Declaration

    Swift

    func CFSocketGetTypeID() -> CFTypeID

    Objective-C

    CFTypeID CFSocketGetTypeID ( void );

    Return Value

    The type identifier for the CFSocket opaque type.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Invalidates a CFSocket object, stopping it from sending or receiving any more messages.

    Declaration

    Swift

    func CFSocketInvalidate(_ s: CFSocket!)

    Objective-C

    void CFSocketInvalidate ( CFSocketRef s );

    Parameters

    s

    The CFSocket object to invalidate.

    Discussion

    You should always invalidate a socket object when you are through using it. Invalidating a CFSocket object prevents the object from sending or receiving any more messages, but does not release the socket object itself.

    If a run loop source was created for s, the run loop source is invalidated.

    If a release callback was specified in CFSocketContext object, this function calls it to release the object in the info field (which was provided when s was created).

    By default, this call closes the underlying socket. If you have explicitly cleared the kCFSocketCloseOnInvalidate flag by calling CFSocketSetSocketFlags, you must close the socket yourself after calling this function.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Returns a Boolean value that indicates whether a CFSocket object is valid and able to send or receive messages.

    Declaration

    Swift

    func CFSocketIsValid(_ s: CFSocket!) -> Boolean

    Objective-C

    Boolean CFSocketIsValid ( CFSocketRef s );

    Parameters

    s

    The CFSocket object to examine.

    Return Value

    true if s can be used for communication, otherwise false.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Sends data over a CFSocket object.

    Declaration

    Swift

    func CFSocketSendData(_ s: CFSocket!, _ address: CFData!, _ data: CFData!, _ timeout: CFTimeInterval) -> CFSocketError

    Objective-C

    CFSocketError CFSocketSendData ( CFSocketRef s, CFDataRef address, CFDataRef data, CFTimeInterval timeout );

    Parameters

    s

    The CFSocket object to use.

    address

    The address, stored as a struct sockaddr appropriate for the protocol family (struct sockaddr_in or struct sockaddr_in6, for example) in a CFData object, to which to send the contents of data. If NULL, the data are sent to the address to which s is already connected. This data object is used only for the duration of the function call.

    data

    The data to send.

    timeout

    The time to wait for the data to be sent.

    Return Value

    An error code indicating success or failure.

    Discussion

    This function sets the send timeout of the underlying socket (the SO_SNDTIMEO option at the SOL_SOCKET level), then calls send (or sendto if you provided an address) with the provided data.

    This function makes no attempt to queue data for delivery beyond the queueing provided by the socket buffer itself. This means:

    • If this function returns kCFSocketSuccess, then by the time it returns, the data has been queued in the socket buffer for delivery.

    • If the socket buffer is full and the timeout is nonzero, the function may return an error. If this happens, the app should wait for the socket buffer to have enough space available for writing before calling this function again.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

Callbacks

  • Callback invoked when certain types of activity takes place on a CFSocket object.

    Declaration

    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 );

    Parameters

    s

    The CFSocket object that experienced some activity.

    callbackType

    The type of activity detected.

    address

    A CFData object holding the contents of a struct sockaddr appropriate for the protocol family of s (struct sockaddr_in or struct sockaddr_in6, for example), identifying the remote address to which s is connected. This value is NULL except for kCFSocketAcceptCallBack and kCFSocketDataCallBack callbacks.

    data

    Data appropriate for the callback type. For a kCFSocketConnectCallBack that failed in the background, it is a pointer to an SInt32 error code; for a kCFSocketAcceptCallBack, it is a pointer to a CFSocketNativeHandle; or for a kCFSocketDataCallBack, it is a CFData object containing the incoming data. In all other cases, it is NULL.

    info

    The info member of the CFSocketContext structure that was used when creating the CFSocket object.

    Discussion

    You specify this callback when you create the CFSocket object with CFSocketCreate, CFSocketCreateConnectedToSocketSignature, CFSocketCreateWithNative, or CFSocketCreateWithSocketSignature.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

Data Types

Miscellaneous

  • A structure that contains program-defined data and callbacks with which you can configure a CFSocket object’s behavior.

    Declaration

    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;

    Fields

    version

    Version number of the structure. Must be 0.

    info

    An arbitrary pointer to program-defined data, which can be associated with the CFSocket object at creation time. This pointer is passed to all the callbacks defined in the context.

    retain

    A retain callback for your program-defined info pointer. Can be NULL.

    release

    A release callback for your program-defined info pointer. Can be NULL.

    copyDescription

    A copy description callback for your program-defined info pointer. Can be NULL.

    Availability

    Available in OS X v10.0 and later.

  • Type for the platform-specific native socket handle.

    Declaration

    Swift

    typealias CFSocketNativeHandle = Int32

    Objective-C

    typedef int CFSocketNativeHandle;

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • A reference to a CFSocket object.

    Declaration

    Swift

    typealias CFSocketRef = CFSocket

    Objective-C

    typedef struct __CFSocket *CFSocketRef;

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • A structure that fully specifies the communication protocol and connection address of a CFSocket object.

    Declaration

    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;

    Fields

    protocolFamily

    The protocol family of the socket.

    socketType

    The socket type of the socket.

    protocol

    The protocol type of the socket.

    address

    A CFData object holding the contents of a struct sockaddr appropriate for the given protocol family (struct sockaddr_in or struct sockaddr_in6, for example), identifying the address of the socket.

    Availability

    Available in OS X v10.0 and later.

Constants

Miscellaneous

  • Types of socket activity that can cause the callback function of a CFSocket object to be called.

    Declaration

    Swift

    struct CFSocketCallBackType : RawOptionSetType { init(_ rawValue: CFOptionFlags) init(rawValue rawValue: 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;

    Constants

    • NoCallBack

      kCFSocketNoCallBack

      No callback should be made for any activity.

      Available in OS X v10.0 and later.

    • ReadCallBack

      kCFSocketReadCallBack

      The callback is called when data is available to be read or a new connection is waiting to be accepted. The data is not automatically read; the callback must read the data itself.

      Available in OS X v10.0 and later.

    • AcceptCallBack

      kCFSocketAcceptCallBack

      New connections will be automatically accepted and the callback is called with the data argument being a pointer to a CFSocketNativeHandle of the child socket. This callback is usable only with listening sockets.

      Available in OS X v10.0 and later.

    • DataCallBack

      kCFSocketDataCallBack

      Incoming data will be read in chunks in the background and the callback is called with the data argument being a CFData object containing the read data.

      Available in OS X v10.0 and later.

    • ConnectCallBack

      kCFSocketConnectCallBack

      If a connection attempt is made in the background by calling CFSocketConnectToAddress or CFSocketCreateConnectedToSocketSignature with a negative timeout value, this callback type is made when the connect finishes. In this case the data argument is either NULL or a pointer to an SInt32 error code, if the connect failed. This callback will never be sent more than once for a given socket.

      Available in OS X v10.0 and later.

    • WriteCallBack

      kCFSocketWriteCallBack

      The callback is called when the socket is writable. This callback type may be useful when large amounts of data are being sent rapidly over the socket and you want a notification when there is space in the kernel buffers for more data.

      Available in OS X v10.2 and later.

    Discussion

    The callback types for which a callback is made is determined when the CFSocket object is created, such as with CFSocketCreate, or later with CFSocketEnableCallBacks and CFSocketDisableCallBacks.

    The kCFSocketReadCallBack, kCFSocketAcceptCallBack, and kCFSocketDataCallBack callbacks are mutually exclusive.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.

  • Flags that can be set on a CFSocket object to control its behavior.

    Declaration

    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 };

    Constants

    • kCFSocketAutomaticallyReenableReadCallBack

      kCFSocketAutomaticallyReenableReadCallBack

      When enabled using CFSocketSetSocketFlags, the read callback is called every time the sockets has data to be read. When disabled, the read callback is called only once the next time data are available. The read callback is automatically reenabled by default.

      Available in OS X v10.2 and later.

    • kCFSocketAutomaticallyReenableAcceptCallBack

      kCFSocketAutomaticallyReenableAcceptCallBack

      When enabled using CFSocketSetSocketFlags, the accept callback is called every time someone connects to your socket. When disabled, the accept callback is called only once the next time a new socket connection is accepted. The accept callback is automatically reenabled by default.

      Available in OS X v10.2 and later.

    • kCFSocketAutomaticallyReenableDataCallBack

      kCFSocketAutomaticallyReenableDataCallBack

      When enabled using CFSocketSetSocketFlags, the data callback is called every time the socket has read some data. When disabled, the data callback is called only once the next time data are read. The data callback is automatically reenabled by default.

      Available in OS X v10.2 and later.

    • kCFSocketAutomaticallyReenableWriteCallBack

      kCFSocketAutomaticallyReenableWriteCallBack

      When enabled using CFSocketSetSocketFlags, the write callback is called every time more data can be written to the socket. When disabled, the write callback is called only the next time data can be written. The write callback is not automatically reenabled by default.

      Available in OS X v10.2 and later.

    • kCFSocketLeaveErrors

      kCFSocketLeaveErrors

      Normally, the CFNetwork stack calls getsockopt(2) Mac OS X Developer Tools Manual Page to read the error code from the socket prior to calling your write callback. This also has the effect of clearing any pending errors on the socket.

      If this flag is set, this call is skipped so that you can check for specific socket errors in your write callback.

      Available in OS X v10.5 and later.

    • kCFSocketCloseOnInvalidate

      kCFSocketCloseOnInvalidate

      When enabled using CFSocketSetSocketFlags, the native socket associated with a CFSocket object is closed when the CFSocket object is invalidated. When disabled, the native socket remains open. This option is enabled by default.

      Available in OS X v10.2 and later.

    Discussion

    The flags for a CFSocket object are set with CFSocketSetSocketFlags. To immediately enable or disable a callback, use CFSocketEnableCallBacks and CFSocketDisableCallBacks.

  • Error codes for many CFSocket functions.

    Declaration

    Swift

    enum CFSocketError : CFIndex { case Success case Error case Timeout }

    Objective-C

    enum CFSocketError { kCFSocketSuccess = 0, kCFSocketError = -1, kCFSocketTimeout = -2 }; typedef enum CFSocketError CFSocketError;

    Constants

    • Success

      kCFSocketSuccess

      The socket operation succeeded.

      Available in OS X v10.0 and later.

    • Error

      kCFSocketError

      The socket operation failed.

      Available in OS X v10.0 and later.

    • Timeout

      kCFSocketTimeout

      The socket operation timed out.

      Available in OS X v10.0 and later.

    Import Statement

    Objective-C

    @import CoreFoundation;

    Swift

    import CoreFoundation

    Availability

    Available in OS X v10.0 and later.