Оценка Ваших сетевых потребностей

Прежде чем можно будет выбрать сетевой API, необходимо знать немного о сетевых семьях API, что OS X и iOS предлагают.

OS X и iOS обеспечивают три основных пространства пользователя, объединяющие уровни API в сеть. Первые два — Основа и CFNetwork (на основе Базовой Основы) — являются платформами, определенными для OS X и iOS. Нижний слой, POSIX, совпадает с на любом другом UNIX - или основанная на Linux операционная система.

На каждом уровне существуют функции или классы, поддерживающие общие сетевые задачи, такие как соединение с удаленными узлами (потоки протокола), загрузка содержания URLs и обнаружения служб на Вашу локальную сеть. Эти уровни показаны в Таблице 2-1.

Таблица 2-1  уровни и семьи OS X и iOS, объединяющего APIS В СЕТЬ

Уровень

Потоки протокола

Загрузка URL

Открытие службы

Уровень Foundation

NSStream

NSURLConnection и NSURLRequest

NSNetService

Базовый уровень Foundation

CFStream

CFHTTPMessage

CFNetService

Уровень POSIX

kqueue

libcurl (например. Обратите внимание на то, что это - сторонний API),

Открытие службы DNS

Созданный поверх сокетов BSD (прямо или косвенно)

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

Общие сетевые задачи

Прежде чем можно будет решить, который определенный API использовать, необходимо сначала оценить, какие сетевые задачи программа должна выполнить.

Поддерживайте одноранговые сети для игр. В iOS платформа Гэйма Кита предоставляет поддержку для одноранговой связи, оба глобально (по Интернету) и локально (использующий персональную сеть Bluetooth или Wi-Fi LAN).

Можно использовать Гэйма Кита в приложении для упрощения следующих одноранговых сетевых задач:

Любая одноранговая связь, не покрытая задачами выше, должна быть выполнена с более низким уровнем, объединяющим в сеть APIs, описанный позже в этом разделе.

Для узнавания больше о Гэйме Ките считайте Руководство по программированию Центра Гэйма.

Поддерживайте одноранговые сети для других приложений. В iOS Мультиравноправная платформа Связи предоставляет поддержку для одноранговой связи по Wi-Fi инфраструктуры, одноранговому Wi-Fi и Bluetooth. Для узнавания больше считайте Обнаружение и Распространение Сетевых служб.

Соединитесь с веб-сервером. Предпочтительный способ отправить и получить короткие данные по стандартному протоколу, такому как HTTP или HTTPS. При помощи этих существующих протоколов Вы минимизируете объем работы, должен был поддерживать соединение на обоих сторона клиента и сервера. HTTP также упрощает перемещать в безопасное (HTTPS) соединение — Вы просто добавляете сертификат на своем сервере и затем добавляете одну букву к первой части URL.

Для узнавания больше о APIs для того, чтобы сделать HTTP и Запросы HTTPS считайте Создание HTTP и Запросы HTTPS.

Чтобы изучить, как вывести на экран веб-страницу в Вашем приложении, считайте веб-контент Отображения и Мультимедийный контент.

Соединитесь с Ftp-сервером. Если Вы не должны делать так для поддержания совместимости с существующими серверами, использованию FTP обескураживают. FTP является старым протоколом с серьезными ограничениями и никакой реальной безопасностью (данные, и пароли отправляются в открытом тексте).

С этим в памяти, если просто необходимо загрузить файл по FTP, необходимо использовать NSURLConnection API и передача это надлежащий URL. Этот API описан в Создании HTTP и Запросов HTTPS, но может также использоваться с ftp:// URLs.

Для более сложных запросов платформа CFNetwork (на основе Базовой Основы) обеспечивает CFFTPStream API для связи с Ftp-серверами. CFNetwork также обеспечивает CFURLAccess API, который может использоваться для удаления файлов на Ftp-сервере. Подробные данные этого APIs выходят за рамки этого документа. Для узнавания больше считайте Руководство по программированию CFNetwork.

Узнайте и распространите сетевые службы. OS X и iOS предоставляют поддержку для Открытия Службы DNS, позволяющего Вам описывать, какие услуги Ваша программа предоставляет, и узнайте другие службы на машину пользователя на соседние машины, или на одной из домашних машин пользователя, использующих Назад для Моего Mac. Можно тогда использовать ту информацию для передачи с другими копиями программы или других программ, которые знает программа, как говорить. Например, OS X использует Открытие Службы DNS, чтобы позволить пользователям найти соседние принтеры, потоковую музыку в iTunes от соседних компьютеров, совместно использовать экраны в Средстве поиска, и т.д.

Чтобы изучить, как обнаружить службы на Вашу локальную сеть или на удаленные серверы с помощью Открытия Службы DNS, считайте Обнаружение и Распространение Сетевых служб.

Разрешите имена хоста DNS. OS X и iOS обеспечивают определитель имен Базового уровня основы и уровня POSIX APIs для получения IP-адресов для имени хоста. Для приобретения знаний об этом APIs считайте Разработку для Реальных Сетей. Однако при разрешении узлов, потому что Вы хотите соединиться с ними, необходимо обычно соединяться по имени вместо этого. Читайте Избегают Разрешать Имена DNS прежде, чем Соединиться с Узлом в Предотвращении Общих Сетевых Ошибок учиться почему.

Используйте сокеты или снабдите потоки сокетом. Если необходимо выполнить сетевые запросы способами, не поддерживающимися высокоуровневым APIs, можно использовать сокеты (и на уровне POSIX и на уровне Core Foundation) или снабдить потоки сокетом (на уровне Core Foundation). Для получения дополнительной информации читайте Используя Потоки Сокета и Сокеты.

Свяжитесь надежно. OS X и iOS поддерживают протокол Transport Layer Security (TLS) и его предшественника, Уровень защищенных сокетов (SSL), для зашифрованной коммуникации и определения доверия сервера. Для узнавания больше читайте Используя Сети Надежно.

Следующие шаги

Теперь, когда Вы решили то, что Вы хотите сделать, можно легко выполнить огромное количество сетевых задач в OS X и iOS с минимальной конфигурацией. Многие наиболее распространенные сетевые задачи и рекомендуемые методы для выполнения их кратко описаны в следующих главах. Следует иметь в виду, что это не всесторонние обсуждения API; каждая глава заканчивается ссылками к другим документам, предоставляющим всестороннюю информацию об этих задачах.