Перейти к содержимому

Cfnetwork mac что это

  • автор:

CFNetwork Concepts

CFNetwork is a low-level, high-performance framework that gives you the ability to have detailed control over the protocol stack. It is an extension to BSD sockets, the standard socket abstraction API that provides objects to simplify tasks such as communicating with FTP and HTTP servers or resolving DNS hosts. CFNetwork is based, both physically and theoretically, on BSD sockets.

Just as CFNetwork relies on BSD sockets, there are a number of Cocoa classes that rely on CFNetwork ( NSURL , for example). In addition, the Web Kit is a set of Cocoa classes to display web content in windows. Both of these classes are very high level and implement most of the details of the networking protocols by themselves. Thus, the structure of the software layers looks like the image in Figure 1-1 .

Figure 1-1 CFNetwork and other software layers on OS X CFNetwork and other software layers on OS X

When to Use CFNetwork

CFNetwork has a number of advantages over BSD sockets. It provides run-loop integration, so if your application is run loop based you can use network protocols without implementing threads. CFNetwork also contains a number of objects to help you use network protocols without having to implement the details yourself. For example, you can use FTP protocols without having to implement all of the details with the CFFTP API. If you understand the networking protocols and need the low-level control they provide but don’t want to implement them yourself, then CFNetwork is probably the right choice.

There are a number of advantages of using CFNetwork instead of Foundation-level networking APIs. CFNetwork is focused more on the network protocols, whereas the Foundation-level APIs are focused more on data access, such as transferring data over HTTP or FTP. Although Foundation APIs do provide some configurability, CFNetwork provides a lot more. For more information on Foundation networking classes, read URL Loading System .

Now that you understand how CFNetwork interacts with the other OS X networking APIs, you’re ready to become familiar with the CFNetwork APIs along with two APIs that form the infrastructure for CFNetwork.

CFNetwork Infrastructure

Before learning about the CFNetwork APIs, you must first understand the APIs which are the foundation for the majority of CFNetwork. CFNetwork relies on two APIs that are part of the Core Foundation framework, CFSocket and CFStream. Understanding these APIs is essential to using CFNetwork.

CFSocket API

Sockets are the most basic level of network communications. A socket acts in a similar manner to a telephone jack. It allows you to connect to another socket (either locally or over a network) and send data to that socket.

The most common socket abstraction is BSD sockets. CFSocket is an abstraction for BSD sockets. With very little overhead, CFSocket provides almost all the functionality of BSD sockets, and it integrates the socket into a run loop. CFSocket is not limited to stream-based sockets (for example, TCP), it can handle any type of socket.

You could create a CFSocket object from scratch using the CFSocketCreate function, or from a BSD socket using the CFSocketCreateWithNative function. Then, you could create a run-loop source using the function CFSocketCreateRunLoopSource and add it to a run loop with the function CFRunLoopAddSource . This would allow your CFSocket callback function to be run whenever the CFSocket object receives a message.

Read CFSocket Reference for more information about the CFSocket API.

CFStream API

Read and write streams provide an easy way to exchange data to and from a variety of media in a device-independent way. You can create streams for data located in memory, in a file, or on a network (using sockets), and you can use streams without loading all of the data into memory at once.

A stream is a sequence of bytes transmitted serially over a communications path. Streams are one-way paths, so to communicate bidirectionally an input (read) stream and output (write) stream are necessary. Except for file-based streams, you cannot seek within a stream; once stream data has been provided or consumed, it cannot be retrieved again from the stream.

CFStream is an API that provides an abstraction for these streams with two new CFType objects: CFReadStream and CFWriteStream. Both types of stream follow all of the usual Core Foundation API conventions. For more information about Core Foundation types, read Core Foundation Design Concepts.

CFStream is built on top of CFSocket and is the foundation for CFHTTP and CFFTP. As you can see in Figure 1-2 , even though CFStream is not officially part of CFNetwork, it is the basis for almost all of CFNetwork.

CFStream API structure

Figure 1-2 CFStream API structure

You can use read and write streams in much the same way as you do UNIX file descriptors. First, you instantiate the stream by specifying the stream type (memory, file, or socket) and set any options. Next, you open the stream and read or write any number of times. While the stream exists, you can get information about the stream by asking for its properties. A stream property is any information about the stream, such as its source or destination, that is not part of the actual data being read or written. When you no longer need the stream, close and dispose of it.

CFStream functions that read or write a stream will suspend, or block, the current process until at least one byte of the data can be read or written. To avoid trying to read from or write to a stream when the stream would block, use the asynchronous version of the functions and schedule the stream on a run loop. Your callback function is called when it is possible to read and write without blocking.

In addition, CFStream has built-in support for the Secure Sockets Layer (SSL) protocol. You can set up a dictionary containing the stream’s SSL information, such as the security level desired or self-signed certificates. Then pass it to your stream as the kCFStreamPropertySSLSettings property to make the stream an SSL stream.

The chapter Working with Streams describes how to use read and write streams.

CFNetwork API Concepts

To understand the CFNetwork framework, you need to be familiar with the building blocks that compose it. The CFNetwork framework is broken up into separate APIs, each covering a specific network protocol. These APIs can be used in combination, or separately, depending on your application. Most of the programming conventions are common among the APIs, so it’s important to comprehend each of them.

CFFTP API

Communicating with an FTP server is made easier with CFFTP. Using the CFFTP API, you can create FTP read streams (for downloading) and FTP write streams (for uploading). Using FTP read and write streams you can perform functions such as:

Download a file from an FTP server

Upload a file to an FTP server

Download a directory listing from an FTP server

Create directories on an FTP server

An FTP stream works like all other CFNetwork streams. For example, you can create an FTP read stream by calling the function CFReadStreamCreateWithFTPURL function. Then, you can call the function CFReadStreamGetError at any time to check the status of the stream.

By setting properties on FTP streams, you can adapt your stream for its particular application. For example, if the server that the stream is connecting to requires a user name and password, you need to set the appropriate properties so the stream can work properly. For more information about the different properties available to FTP streams read Setting up the Streams .

A CFFTP stream can be used synchronously or asynchronously. To open the connection with the FTP server that was specified when the FTP read stream was created, call the function CFReadStreamOpen . To read from the stream, use the CFReadStreamRead function and provide the read stream reference, CFReadStreamRef , that was returned when the FTP read stream was created. The CFReadStreamRead function fills a buffer with the output from the FTP server.

For more information on using CFFTP, see Working with FTP Servers .

CFHTTP API

To send and receive HTTP messages, use the CFHTTP API. Just as CFFTP is an abstraction for FTP protocols, CFHTTP is an abstraction for HTTP protocols.

Hypertext Transfer Protocol (HTTP) is a request/response protocol between a client and a server. The client creates a request message. This message is then serialized, a process that converts the message into a raw byte stream. Messages cannot be transmitted until they are serialized first. Then the request message is sent to the server. The request typically asks for a file, such as a webpage. The server responds, sending back a string followed by a message. This process is repeated as many times as is necessary.

To create an HTTP request message, you specify the following:

The request method, which can be one of the request methods defined by the Hypertext Transfer Protocol, such as OPTIONS , GET , HEAD , POST , PUT , DELETE , TRACE , and CONNECT

The URL, such as http://www.apple.com

The HTTP version, such as version 1.0 or 1.1

The message’s headers, by specifying the header name, such as User-Agent , and its value, such as MyUserAgent

The message’s body

After the message has been constructed, you serialize it. Following serialization, a request might look like this:

Deserialization is the opposite of serialization. With deserialization, a raw byte stream received from a client or server is restored to its native representation. CFNetwork provides all of the functions needed to get the message type (request or response), HTTP version, URL, headers, and body from an incoming, serialized message.

More examples of using CFHTTP are available in Communicating with HTTP Servers .

CFHTTPAuthentication API

If you send an HTTP request to an authentication server without credentials (or with incorrect credentials), the server returns an authorization challenge (more commonly known as a 401 or 407 response). The CFHTTPAuthentication API applies authentication credentials to challenged HTTP messages. CFHTTPAuthentication supports the following authentication schemes:

NT LAN Manager (NTLM)

Simple and Protected GSS-API Negotiation Mechanism (SPNEGO)

New in OS X v10.4 is the ability to carry persistency across requests. In OS X v10.3 each time a request was challenged, you had to start the authentication dialog from scratch. Now, you maintain a set of CFHTTPAuthentication objects for each server. When you receive a 401 or 407 response, you find the correct object and credentials for that server and apply them. CFNetwork uses the information stored in that object to process the request as efficiently as possible.

By carrying persistency across request, this new version of CFHTTPAuthentication provides much better performance. More information about how to use CFHTTPAuthentication is available in Communicating with Authenticating HTTP Servers .

CFHost API

You use the CFHost API to acquire host information, including names, addresses, and reachability information. The process of acquiring information about a host is known as resolution.

CFHost is used just like CFStream:

Create a CFHost object.

Start resolving the CFHost object.

Retrieve either the addresses, host names, or reachability information.

Destroy the CFHost object when you are done with it.

Like all of CFNetwork, CFHost is IPv4 and IPv6 compatible. Using CFHost, you could write code that handles IPv4 and IPv6 completely transparently.

CFHost is integrated closely with the rest of CFNetwork. For example, there is a CFStream function called CFStreamCreatePairWithSocketToCFHost that will create a CFStream object directly from a CFHost object. For more information about the CFHost object functions, see CFHost Reference .

CFNetServices API

If you want your application to use Bonjour to register a service or to discover services, use the CFNetServices API. Bonjour is Apple’s implementation of zero-configuration networking (ZEROCONF), which allows you to publish, discover, and resolve network services.

To implement Bonjour the CFNetServices API defines three object types: CFNetService, CFNetServiceBrowser, and CFNetServiceMonitor. A CFNetService object represents a single network service, such as a printer or a file server. It contains all the information needed for another computer to resolve that server, such as name, type, domain and port number. A CFNetServiceBrowser is an object used to discover domains and network services within domains. And a CFNetServiceMonitor object is used to monitor a CFNetService object for changes, such as a status message in iChat.

For a full description of Bonjour, see Bonjour Overview. For more information about using CFNetServices and implementing Bonjour, see NSNetServices and CFNetServices Programming Guide.

CFNetDiagnostics API

Applications that connect to networks depend on a stable connection. If the network goes down, this causes problems with the application. By adopting the CFNetDiagnostics API, the user can self-diagnose network issues such as:

Physical connection failures (for example, a cable is unplugged)

Network failures (for example, DNS or DHCP server no longer responds)

Configuration failures (for example, the proxy configuration is incorrect)

Once the network failure has been diagnosed, CFNetDiagnostics guides the user to fix the problem. You may have seen CFNetDiagnostics in action if Safari failed to connect to a website. The CFNetDiagnostics assistant can be seen in Figure 1-3 .

Figure 1-3 Network diagnostics assistant alt=»CFNetDiagnostics Assistant» width=»729″ height=»549″ /> alt=»CFNetDiagnostics Assistant» width=»670″ height=»504″ />

By providing CFNetDiagnostics with the context of the network failure, you can call the CFNetDiagnosticDiagnoseProblemInteractively function to lead the user through the prompts to find a solution. Additionally, you can use CFNetDiagnostics to query for connectivity status and provide uniform error messages to the user.

To see how to integrate CFNetDiagnotics into your application read Using Network Diagnostics . CFNetDiagnostics is a new API in OS X v10.4.

Copyright © 2012 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2012-06-11

CFNetwork definition

Explanation CFNETWORK: A high-level API used for creating, sending, and receiving serialized messages over a network. CFNetwork is built on top of Secure Transport , and so can use the Secure Transport and TLS secure networking protocols

More definitions for Mac OS users such as CFNetwork in Dictionary C .

Help Core Audio Format: Usage See CAF cfnetwork definition. Help Client: Usage that consumes services of some kind supplied by its provider. In a driver stack, the client in a provider/client relationship is farther away from the Platform Expert. See also provider . (2) In cfnetwork explain. Help CFM: Usage Code Fragment Manager. The library manager and code loader for processes based on PEF (Preferred Executable Format) object files (in Carbon cfnetwork what is. Help Constant: Usage A reserved word with a predefined value cfnetwork meaning. Help Connection: Usage In Core Audio, a hand-off point for audio data entering or leaving an audio unit . A connection has one or more channels. See also channel cfnetwork abbreviation.

Понятия CFNetwork

CFNetwork является низким уровнем, высокоэффективная платформа, предоставляющая Вам возможность детализировать управление стеком протоколов. Это — расширение сокетов BSD, стандартная абстракция сокета API, обеспечивающий объекты упростить задачи, такие как связь с FTP и серверами HTTP или разрешением хостов DNS. CFNetwork базируется, и физически и теоретически, на сокетах BSD.

Так же, как CFNetwork полагается на сокеты BSD, существует много классов Какао, полагающихся на CFNetwork ( NSURL , например). Кроме того, веб-Набор является рядом классов Какао для отображения веб-контента в окнах. Оба из этих классов являются очень высоким уровнем и реализуют большинство подробных данных сетевых протоколов собой. Таким образом структура программных слоев похожа на изображение на рисунке 1-1 .

CFNetwork and other software layers on OS X

Рисунок 1-1 CFNetwork и другие программные слои на OS X

Когда использовать CFNetwork

CFNetwork имеет много преимуществ перед сокетами BSD. Это обеспечивает интеграцию цикла выполнения, поэтому если Ваше приложение является выполненным циклом, базируемым, можно использовать сетевые протоколы, не реализовывая потоки. CFNetwork также содержит много объектов помочь Вам использовать сетевые протоколы, не имея необходимость реализовывать подробные данные самим. Например, можно использовать протоколы FTP, не имея необходимость реализовывать все подробные данные с API CFFTP. Если Вы понимаете сетевые протоколы и нуждаетесь в низкоуровневом управлении, они обеспечивают, но не хотят реализовывать их сами, то CFNetwork является, вероятно, правильным выбором.

Существует много преимуществ использования CFNetwork вместо Уровня основы, объединяющего APIS В СЕТЬ. CFNetwork фокусируется больше на сетевых протоколах, тогда как Уровень основы APIs фокусируется больше на доступе к данным, таком как передача данных по HTTP или FTP. Несмотря на то, что Основа, APIs действительно обеспечивает некоторую конфигурируемость, CFNetwork, обеспечивает намного больше. Для получения дополнительной информации об Основе сетевые классы считайте Руководство по программированию Загрузочной системы URL.

Теперь, когда Вы понимаете, как CFNetwork взаимодействует с другим OS X, объединяющим APIS В СЕТЬ, Вы готовы познакомиться с APIs CFNetwork вместе с двумя APIs, формирующим инфраструктуру для CFNetwork.

Инфраструктура CFNetwork

Прежде, чем узнать о APIs CFNetwork, необходимо сначала понять APIs, который является основой для большинства CFNetwork. CFNetwork полагается на два APIs, который является частью Базовой платформы Основы, CFSocket и CFStream. Понимание этого APIs важно для использования CFNetwork.

CFSocket API

Сокеты являются наиболее базовым уровнем сетевой связи. Сокет действует подобным образом к телефонному разъему. Это позволяет Вам соединяться с другим сокетом (или локально или по сети) и отправлять данные в тот сокет.

Наиболее распространенная абстракция сокета является сокетами BSD. CFSocket является абстракцией для сокетов BSD. С очень мало служебным, CFSocket обеспечивает почти всю функциональность сокетов BSD, и это интегрирует сокет в цикл выполнения. CFSocket не ограничивается сокетами на основе потоков (например, TCP), он может обработать любой тип сокета.

Вы могли создать объект CFSocket с нуля с помощью CFSocketCreate функция, или от сокета BSD с помощью CFSocketCreateWithNative функция. Затем Вы могли создать источник цикла выполнения с помощью функции CFSocketCreateRunLoopSource и добавьте его к циклу выполнения с функцией CFRunLoopAddSource . Это позволило бы Вашей функции обратного вызова CFSocket быть выполненной каждый раз, когда объект CFSocket получает сообщение.

Рид Кфсокет Референс для получения дополнительной информации о КФСОКЕТЕ API.

CFStream API

Считайте и запишите, что потоки обеспечивают простой способ обмениваться данными к и от множества носителей независящим от устройств способом. Можно создать потоки для данных, расположенных в памяти в файле, или в сети (использующие сокеты), и можно использовать потоки, не загружая все данные в память сразу.

Поток является последовательностью байтов, переданных последовательно по каналу связи. Потоки являются односторонними путями, так чтобы передать двунаправлено ввод (чтение) поток и вывести (пишет), что поток необходим. За исключением основанных на файле потоков, Вы не можете искать в потоке; как только потоковые данные были предоставлены или использованы, они не могут быть получены снова от потока.

CFStream является API, обеспечивающий абстракцию для этих потоков с двумя новыми объектами CFType: CFReadStream и CFWriteStream. Оба типа потока следуют за всей обычной Базовой Основой соглашения API. Для получения дополнительной информации о Базовых типах Основы, считайте Базовые Концепции проекта Основы.

CFStream создается поверх CFSocket и является основой для CFHTTP и CFFTP. Как Вы видите на рисунке 1-2 , даже при том, что CFStream не является официально частью CFNetwork, это — основание для почти всех CFNetwork.

CFStream API structure

Рисунок 1-2 CFStream структура API

Можно использовать чтение и записать потоки почти таким же способом, поскольку Вы делаете дескрипторы файлов UNIX. Во-первых, Вы инстанцируете потока путем указания потокового типа (память, файл или сокет) и устанавливаете любые опции. Затем, Вы открываете поток и читаете или пишете любое число раз. В то время как поток существует, можно получить информацию о потоке путем выяснения его свойства. Потоковое свойство является любой информацией о потоке, таком как его источник или место назначения, которое не является частью фактических данных, считанных или записанных. Когда Вы больше не нуждаетесь в потоке, закрываетесь и избавляетесь от него.

Функции CFStream, читающие или пишущие поток, приостановят, или блок, текущий процесс, пока по крайней мере один байт данных не сможет быть считан или записан. Чтобы избежать пытаться читать из или записать в поток, когда поток блокировал бы, используйте асинхронную версию функций и запланируйте поток на цикл выполнения. Вашу функцию обратного вызова вызывают, когда возможно читать и записать без блокирования.

Кроме того, CFStream имеет встроенную поддержку протокола Уровня защищенных сокетов (SSL). Можно установить словарь, содержащий информацию о SSL потока, такую как уровень безопасности желаемые или самоподписанные сертификаты. Тогда передайте его своему потоку как kCFStreamPropertySSLSettings свойство для создания потока потоком SSL.

Глава , Работающая с Потоками , описывает, как использовать потоки записи и чтение.

CFNetwork понятия API

Для понимания платформы CFNetwork необходимо быть знакомы со стандартными блоками, составляющими ее. Платформа CFNetwork разбита в отдельный APIs, каждый покрывающий определенный сетевой протокол. Этот APIs может использоваться в комбинации, или отдельно, в зависимости от Вашего приложения. Большинство соглашений программирования распространено среди APIs, таким образом, важно постигать каждого из них.

API CFFTP

Связь с Ftp-сервером сделана проще с CFFTP. Используя API CFFTP, можно создать потоки чтения FTP (для загрузки) и потоки записи FTP (для загрузки). Используя чтение FTP и потоки записи можно выполнить функции, такие как:

Загрузите файл с Ftp-сервера

Загрузите файл на Ftp-сервер

Загрузите перечисление каталога с Ftp-сервера

Создайте каталоги на Ftp-сервере

Поток FTP работает как все другие потоки CFNetwork. Например, можно создать поток чтения FTP путем вызывания функции CFReadStreamCreateWithFTPURL функция. Затем можно вызвать функцию CFReadStreamGetError в любое время проверять состояние потока.

Путем установки свойств на потоках FTP можно адаптировать поток к его определенному приложению. Например, если сервер, с которым соединяется поток, требует имени пользователя и пароля, необходимо установить надлежащие свойства, таким образом, поток может работать должным образом. Для получения дополнительной информации о различных свойствах, доступных потоковому чтению FTP , Настраивающему Потоки .

Поток CFFTP может использоваться синхронно или асинхронно. Для открытия соединения с Ftp-сервером, указанным, когда поток чтения FTP создавался вызовите функцию CFReadStreamOpen . Для чтения из потока используйте CFReadStreamRead функционируйте и обеспечьте потоковую ссылку чтения, CFReadStreamRef , когда поток чтения FTP создавался, это было возвращено. CFReadStreamRead функционируйте заполняет буфер выводом от Ftp-сервера.

Для получения дополнительной информации об использовании CFFTP посмотрите Работу с Ftp-серверами .

API CFHTTP

Чтобы отправить и получить сообщения HTTP, используйте API CFHTTP. Так же, как CFFTP является абстракцией для протоколов FTP, CFHTTP является абстракцией для протоколов HTTP.

Протокол передачи гипертекста (HTTP) является протоколом запроса/ответа между клиентом и сервером. Клиент создает сообщение запроса. Это сообщение тогда сериализируется, процесс, преобразовывающий сообщение в необработанный поток байтов. Сообщения не могут быть переданы, пока они не сериализируются сначала. Тогда сообщение запроса отправляется в сервер. Запрос обычно просит файл, такой как веб-страница. Сервер отвечает, передавая обратно строку, сопровождаемую сообщением. Этот процесс повторяется так много раз, как необходимо.

Для создания сообщения Запроса HTTP Вы указываете следующее:

Метод запроса, который может быть одним из методов запроса, определенных Протоколом передачи гипертекста, такой как OPTIONS , GET , HEAD , POST , PUT , DELETE , TRACE , и CONNECT

URL, такой как http://www.apple.com

Версия HTTP, такая как версия 1.0 или 1.1

Заголовки сообщения, путем указания имени заголовка, такой как User-Agent , и его значение, такой как MyUserAgent

После того, как сообщение было создано, Вы сериализируете его. Следующая сериализация, запрос мог бы быть похожим на это:

Десериализация является противоположностью сериализации. С десериализацией необработанный поток байтов, полученный от клиента или сервера, восстанавливается его собственному представлению. CFNetwork обеспечивает, все функции должны были получить тип сообщения (запрос или ответ), версия HTTP, URL, заголовки и организация от поступления, сериализированного сообщения.

Больше примеров использования CFHTTP доступно в Связи с Серверами HTTP .

CFHTTPAuthentication API

При отправке Запроса HTTP в сервер аутентификации без учетных данных (или с неправильными учетными данными), сервер возвращает проблему авторизации (более обычно известный как 401 или 407 ответов). API CFHTTPAuthentication применяет учетные данные аутентификации к оспариваемым сообщениям HTTP. CFHTTPAuthentication поддерживает следующие схемы аутентификации:

Диспетчер локальной сети NT (NTLM)

Простой и защищенный механизм согласования GSS-API (SPNEGO)

Новый в OS X v10.4 является возможностью перенести постоянство через запросы. В OS X v10.3 каждый раз, когда запросу бросили вызов, необходимо было запустить диалог аутентификации с нуля. Теперь, Вы поддерживаете ряд объектов CFHTTPAuthentication для каждого сервера. При получении 401 или 407 ответов Вы находите правильный объект и учетные данные для того сервера и применяете их. CFNetwork использует информацию, хранившую в том объекте обработать запрос максимально эффективно.

Путем переноса постоянства через запрос эта новая версия CFHTTPAuthentication обеспечивает намного лучшую производительность. Больше информации о том, как использовать CFHTTPAuthentication, доступно в Связи с Аутентификацией Серверов HTTP .

CFHost API

Вы используете API CFHost для получения информации об узле, включая имена, адреса и информацию о достижимости. Процесс получения информации об узле известен как разрешение.

CFHost используется точно так же, как CFStream:

Создайте объект CFHost.

Начните разрешать объект CFHost.

Получите или адреса, имена хоста или информацию о достижимости.

Уничтожьте объект CFHost, когда Вы будете сделаны с ним.

Как все CFNetwork, CFHost является IPv4 и совместимым IPv6. Используя CFHost, Вы могли записать код, обрабатывающий IPv4 и IPv6 полностью прозрачно.

CFHost интегрируется близко с остальной частью CFNetwork. Например, существует вызванная функция CFStream CFStreamCreatePairWithSocketToCFHost это создаст объект CFStream непосредственно из объекта CFHost. Для получения дополнительной информации о функциях объекта CFHost, см. Ссылку CFHost.

CFNetServices API

Если Вы хотите, чтобы Ваше приложение использовало Добрый день, чтобы зарегистрировать службу или обнаружить службы, используйте CFNetServices API. Добрый день реализация Apple нулевой конфигурации, объединяющей в сеть (ZEROCONF), позволяющий Вам публиковать, обнаруживать и разрешать сетевые службы.

Реализовать Добрый день CFNetServices API определяет три типов объектов: CFNetService, CFNetServiceBrowser и CFNetServiceMonitor. Объект CFNetService представляет службу единой сети, такую как принтер или файловый сервер. Это содержит всю информацию, необходимую для другого компьютера, чтобы разрешить, что сервер, такой как имя, вводит, доменный и номер порта. CFNetServiceBrowser является объектом, используемым для обнаружения доменов и сетевых служб в доменах. И объект CFNetServiceMonitor используется для контроля объекта CFNetService для изменений, таких как сообщение о состоянии в iChat.

Для полного описания Добрый день, см. Добрый день Обзор. Для получения дополнительной информации об использовании CFNetServices и реализующий Добрый день, см. Руководство по программированию NSNetServices и CFNetServices.

CFNetDiagnostics API

Приложения, соединяющиеся с сетями, зависят от стабильного соединения. Если сеть теряет работоспособность, это вызывает проблемы с приложением. Путем принятия CFNetDiagnostics API пользователь может самодиагностировать сетевые проблемы, такие как:

Отказы физического соединения (например, кабель отключается),

Отказы сети (например, DNS или сервер DHCP больше не отвечает),

Отказы конфигурации (например, конфигурация прокси является неправильной),

Как только отказ сети был диагностирован, CFNetDiagnostics направляет пользователя для решения проблемы. Если Safari не удалось соединиться с веб-сайтом, Вы, возможно, видели CFNetDiagnostics в действии. Ассистент CFNetDiagnostics может быть замечен на рисунке 1-3 .

Ассистент Диагностики сети рисунка 1-3 alt=»CFNetDiagnostics Assistant» width=»729″ height=»549″ /> alt=»CFNetDiagnostics Assistant» width=»670″ height=»504″ />

Путем обеспечения CFNetDiagnostics контекстом отказа сети можно вызвать CFNetDiagnosticDiagnoseProblemInteractively функционируйте, чтобы привести пользователя посредством подсказок находить решение. Кроме того, можно использовать CFNetDiagnostics, чтобы запросить для состояния связи и предоставить универсальные сообщения об ошибках пользователю.

Видеть, как интегрировать CFNetDiagnotics в Ваше чтение приложения Используя Диагностику сети . CFNetDiagnostics является новый API в OS X v10.4.

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Open source, community-based and -driven version of Apple’s CFNetwork open source project; itself an open source version of Apple’s iOS/iPadOS/macOS/tvOS/watchOS CFNetwork framework.

License

gerickson/opencfnetwork

Name already in use

  • Local
  • Codespaces

Use Git or checkout with SVN using the web URL.

Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Open CFNetwork

Introduction

This is the public, open source distribution of Apple, Inc.’s CFNetwork framework. This distribution is refered to as OpenCFNetwork to distinguish it from the official Apple release, and to reflect the open source, community-based and -driven nature of this project.

This release of Open CFNetwork corresponds to the CFNetwork framework found in Mac OS X 10.8 and later, CFNetwork-129.20.

The goal of this port is to provide, over time, a feature-compatible, cross- platform version of the official CFNetwork framework. In general, we do not propose extending functionality beyond the official Apple release so that this project can serve as a drop-in replacement.

What Works and What Does Not Work

While all of the functionality present in Open CFNetwork should work in Darwin, it has not been tested relative to the Apple-provided equivalent framework.

For Linux, CFHost has been ported and tested. All other functionality has only been altered for successful compilation and linking but not functionality.

For Windows, no porting or testing has been done.

  1. The core CFSocketStream functionality in Linux has been ported and tested; however, the supplemental CFSocketStream functionality in CFNetwork, particularly for secure streams has not.

Getting Started with Open CFNetwork

Building Open CFNetwork

If you are not using a prebuilt distribution of Open CFNetwork, building Open CFNetwork should be a straightforward. Start with:

The second configure step generates Makefile files from Makefile.in files and only needs to be done once unless those input files have changed.

Although not strictly necessary, the additional step of sanity checking the build results is recommended:

Dependencies

In addition to depending on the C Standard Libraries, Open CFNetwork depends on:

The dependencies can either be satisfied by building them directly from source, or on system such as Linux, installing them using a package management system. For example, on Debian systems:

Installing Open CFNetwork

To install Open CFNetwork for your use simply invoke:

to install Open CFNetwork in the location indicated by the —prefix configure option (default «/usr/local»). If you intended an arbitrarily relocatable Open CFNetwork installation and passed —prefix=/ to configure , then you might use DESTDIR to, for example install Open CFNetwork in your user directory:

Maintaining Open CFNetwork

If you want to maintain, enhance, extend, or otherwise modify Open CFNetwork, it is likely you will need to change its build system, based on GNU autotools, in some circumstances.

After any change to the Open CFNetwork build system, including any Makefile.am files or the configure.ac file, you must run the autoreconf to update the build system.

Dependencies

Due to its leverage of GNU autotools, if you want to modify or otherwise maintain the Open CFNetwork build system, the following additional packages are required and are invoked by autoreconf :

  • autoconf
  • automake
  • libtool
Linux

When supported on Linux, on Debian-based Linux distributions such as Ubuntu, these Open CFNetwork build system dependencies can be satisfied with the following:

Mac OS X

On Mac OS X, these dependencies can be installed and satisfied using Brew:

Interact

There are numerous avenues for Open CFNetwork support:

  • Bugs and feature requests — submit to the Issue Tracker

Versioning

Open CFNetwork follows Apple’s upstream CFNetwork versioning.

License

Open CFNetwork is released under the Apple Public Source License 2.0 license. See the LICENSE file for more information.

About

Open source, community-based and -driven version of Apple’s CFNetwork open source project; itself an open source version of Apple’s iOS/iPadOS/macOS/tvOS/watchOS CFNetwork framework.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *