NSNetService
NSNetService класс представляет сетевую службу, или одно Ваше приложение публикует или является клиентом. Этот класс и NSNetServiceBrowser использование класса многоадресно передало DNS для передачи информации о сетевых службах к и из приложения. API NSNetService обеспечивает удобный способ опубликовать услуги, предложенные Вашим приложением и разрешить адрес сокета для службы.
Типы служб Вы получаете доступ к использованию NSNetService те же типы, что Вы получаете доступ к непосредственно использованию сокеты BSD. HTTP и FTP являются двумя услугами, обычно предоставляемыми системами. (Для списка общего обслуживания и портов, используемых теми службами, посмотрите файл /etc/services.) Приложения могут также определить свои собственные службы для предоставления определенных данных клиентам.
Можно использовать NSNetService класс или как издатель службы или как клиент службы. Если Ваше приложение публикует службу, Ваш код должен получить порт и подготовить сокет для передачи с клиентами. Как только Ваш сокет готов, Вы используете NSNetService класс, чтобы уведомить клиенты, что Ваша служба готова. Если Ваше приложение является клиентом сетевой службы, можно или создать NSNetService возразите непосредственно (если Вы знаете точный узел и информацию порта), или используйте NSNetServiceBrowser возразите для просмотра для служб.
Для публикации службы инициализируйте Ваш NSNetService объект с именем службы, доменом, вводит, и информация порта. Вся эта информация должна быть допустимой для сокета, создаваемого Вашим приложением. После того, как инициализированный, вызовите publish метод для широковещательной передачи информации о службе к сети.
При соединении со службой используйте NSNetServiceBrowser класс, чтобы определить местоположение службы на сеть и получить соответствие NSNetService объект. Как только у Вас есть объект, вызовите resolveWithTimeout: метод, чтобы проверить, что служба доступна и готова к Вашему приложению. Если это, addresses свойство предоставляет информацию сокета, которую можно использовать для соединения со службой.
Методы NSNetService действуйте асинхронно, таким образом, на Ваше приложение не влияет скорость сети. Вся информация о службе возвращается к Вашему приложению через NSNetService делегат объекта. Необходимо обеспечить объект делегата реагировать на сообщения и обработать ошибки соответственно.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.2 и позже.
-
Возвращает получатель, инициализированный как сетевая служба данного типа, и устанавливает начальную информацию об узле.
Объявление
Параметры
domainДомен для службы. Для разрешения в доменах по умолчанию передайте в пустой строке (
@""). Для ограничения разрешения локальным доменом использовать@"local.".При создании этого объекта разрешить службу, информацию которой приложение хранило ранее, необходимо установить это в домен, в котором была первоначально обнаружена служба.
Можно также использовать a
NSNetServiceBrowserобъект получить список возможных доменов, в которых можно обнаружить и разрешить службы.typeТип сетевой службы.
typeдолжен содержать и текстовый слой службы и информацию о транспортном уровне. Гарантировать, что mDNS респондент ищет службы, в противоположность узлам, префикс и имя службы и имя транспортного уровня с символом подчеркивания (“_”). Например, для поиска службы HTTP на TCP Вы использовали бы строку типа»_http._tcp.«. Обратите внимание на то, что символ точки в конце строки, указывающей, что доменное имя является абсолютным именем, требуется.nameИмя службы для разрешения.
Возвращаемое значение
Получатель, инициализированный как сетевая служба, называют
nameиз типаtypeв доменеdomain.Обсуждение
Этот метод является надлежащим инициализатором для использования для разрешения службы — чтобы опубликовать службу, использовать initWithDomain:type:name:port:.
Если Вы знаете значения для
domain,type, иnameиз службы Вы хотите соединиться с, можно создатьNSNetServiceобъект с помощью этого инициализатора и вызоваresolveWithTimeout:на результате.Вы не можете использовать этот инициализатор для публикации службы. Этот инициализатор передает недопустимый номер порта определяемому инициализатору, препятствующему тому, чтобы была зарегистрирована служба. Вызов
publishнаNSNetServiceобъект, инициализированный с этим методом, генерирует вызов Вашему делегатуnetService:didNotPublish:метод сNSNetServicesBadArgumentErrorошибка.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Инициализирует получатель для публикации сетевой службы типа
typeв местоположении разъема, указанномdomain,name, иport.Объявление
Параметры
domainДомен для службы. Для использования регистрационных доменов по умолчанию передайте в пустой строке (
@""). Для ограничения регистрации локальным доменом использовать@"local.".Можно также использовать a
NSNetServiceBrowserобъект получить список возможных доменов, в которых можно опубликовать службу.typeТип сетевой службы.
typeдолжен содержать и текстовый слой службы и информацию о транспортном уровне. Гарантировать, что mDNS респондент ищет службы, в противоположность узлам, префикс и имя службы и имя транспортного уровня с символом подчеркивания (“_”). Например, для поиска службы HTTP на TCP Вы использовали бы строку типа»_http._tcp.«. Обратите внимание на то, что символ точки в конце строки, указывающей, что доменное имя является абсолютным именем, требуется.nameИмя, которым служба идентифицируется для сети. Имя должно быть уникальным. Если Вы передаете пустую строку (
@""), система автоматически распространяет Вашу службу с помощью имени компьютера в качестве имени службы.portПорт, на котором публикуется служба.
Если Вы указываете
NSNetServiceListenForConnectionsфлаг, можно передать нуль (0), когда служба автоматически выделяет произвольный (эфемерный) порт для Вашей службы. Когда делегатnetServiceDidPublish:вызывается, можно определить фактический порт, выбранный путем вызова объекта службыBackward Compatibility Noteметод или доступ к соответствующему свойству.Если Ваше приложение прислушивается к соединениям самостоятельно, значению
portдолжен быть номер порта, полученный Вашим приложением за службу.Обсуждение
Вы используете этот метод для создания службы, которую Вы хотите опубликовать в сети. Несмотря на то, что можно также использовать этот метод для создания службы, Вы хотите решить в сети, является обычно более надлежащим использовать
initWithDomain:type:name:метод вместо этого.При публикации службы необходимо обеспечить допустимые параметры для распространения службы правильно. Если главный компьютер имеет доступ к многократным регистрационным доменам, необходимо создать отдельный
NSNetServiceобъекты для каждого домена. При попытке опубликовать в домене, для которого у Вас нет регистрационных полномочий, Ваш запрос может быть отклонен.Приемлемо использовать пустую строку для
domainпараметр при публикации или просмотре службы, но не полагается на это для разрешения.Этот метод является определяемым инициализатором.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Возвраты
NSDataобъект, представляющий запись TXT, сформировался из данного словаря.Объявление
Objective C
+ (NSData *)dataFromTXTRecordDictionary:(NSDictionary *)txtDictionaryПараметры
txtDictionaryСловарь, содержащий запись TXT.
Возвращаемое значение
NSDataобъект, представляющий данные TXT, сформировался изtxtDictionary. Приводит утверждение к сбою еслиtxtDictionaryне может быть представлен какNSDataобъект.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Возвращает словарь, представляющий запись TXT, данную как
NSDataобъект.Объявление
Objective C
+ (NSDictionary *)dictionaryFromTXTRecordData:(NSData *)txtDataПараметры
txtDataОбъект данных, кодирующий запись TXT.
Возвращаемое значение
Представление словаря
txtData. Ключи словаряNSStringобъекты с помощью кодирования UTF8. Значения, связанные с ключами всего словаря,NSDataобъекты, инкапсулирующие строки или данные.Приводит утверждение к сбою если
txtDataне может быть представлен какNSDictionaryобъект.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Массив только для чтения, содержащий
NSDataобъекты, каждый из которых содержит адрес сокета для службы. (только для чтения)Объявление
Swift
var addresses: [AnyObject]? { get }Objective C
@property(readonly, copy) NSArray *addressesОбсуждение
Массив, содержащий
NSDataобъекты, каждый из которых содержит адрес сокета для службы. КаждыйNSDataобъект в возвращенном массиве содержит надлежащееsockaddrструктура, которую можно использовать для соединения с сокетом. Точный тип этой структуры зависит от службы, с которой Вы соединяетесь. Если никакие адреса не были разрешены для службы, возвращенный массив содержит нулевые элементы.Для единственной службы возможно решить больше чем к одному адресу или не решить к любым адресам. Если компьютер, публикующий службу, в настоящее время является размещением в разных сетях, служба могла бы решить к многократным адресам.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Строка, содержащая домен для этой службы. (только для чтения)
Обсуждение
Это может быть явным доменным именем, или оно может содержать универсальное локальное доменное имя,
@"local."(отметьте запаздывающий период, указывающий абсолютное имя).Значение этого свойства установлено, когда объект сначала инициализируется, возражают ли Вашим кодом или браузером. Посмотрите
initWithDomain:type:name:для получения дополнительной информации.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
-
Создает пару потоков ввода и вывода для получателя и возвращает булево значение, указывающее, были ли они получены успешно.
Объявление
Swift
func getInputStream(_inputStream: UnsafeMutablePointer<NSInputStream?>, outputStreamoutputStream: UnsafeMutablePointer<NSOutputStream?>) -> BoolObjective C
- (BOOL)getInputStream:(out NSInputStream **)inputStreamoutputStream:(out NSOutputStream **)outputStreamПараметры
inputStreamПо возврату, входному потоку для получателя. Передача
NULLесли Вам не нужен этот поток.outputStreamПо возврату, потоку вывода для получателя. Передача
NULLесли Вам не нужен этот поток.Возвращаемое значение
YEStrueесли потоки создаются успешно, иначеNOfalse.Обсуждение
После того, как этот метод вызывают, никакие обратные вызовы делегата не вызывает получатель.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Строка, содержащая имя этой службы. (только для чтения)
Обсуждение
Это значение установлено, когда объект сначала инициализируется, возражают ли Вашим кодом или браузером. Посмотрите
initWithDomain:type:name:для получения дополнительной информации.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
-
Тип опубликованной службы. (только для чтения)
Обсуждение
Это значение установлено, когда объект сначала инициализируется, возражают ли Вашим кодом или браузером. Посмотрите
initWithDomain:type:name:для получения дополнительной информации.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
-
Возвращает запись TXT для получателя.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
-
Устанавливает рекорд TXT для получателя и возвращает булево значение, указывающее, была ли работа успешна.
Объявление
Swift
func setTXTRecordData(_recordData: NSData!) -> BoolObjective C
- (BOOL)setTXTRecordData:(NSData *)recordDataПараметры
recordDataTXT записывают для получателя.
Возвращаемое значение
YEStrueеслиrecordDataуспешно установлен как запись TXT, иначеNOfalse.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
См. также
-
protocolSpecificInformation - protocolSpecificInformation(OS X v10.4)Протокол возвратов определенная информация для устаревших клиентов ZeroConf-стиля.
Оператор осуждения
Использовать
TXTRecordDataвместо этого.Объявление
Objective C
- (NSString *)protocolSpecificInformationВозвращаемое значение
Любые специфичные для протокола данные связались со службой.
Обсуждение
Этот метод предоставлен для устаревшей поддержки клиентов ZeroConf-стиля старшего возраста, и его использованию обескураживают.
Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.4.
См. также
-
Протокол наборов определенная информация для устаревших клиентов ZeroConf-стиля.
Оператор осуждения
Использовать
setTXTRecordData:вместо этого.Объявление
Objective C
- (void)setProtocolSpecificInformation:(NSString *)specificInformationПараметры
specificInformationИнформация для протокола.
Обсуждение
Присоединяет специфичные для протокола данные к службе.
Этот метод предоставлен для устаревшей поддержки клиентов ZeroConf-стиля старшего возраста, и его использованию обескураживают.
Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.4.
См. также
-
Делегат к получателю.
Объявление
Swift
unowned(unsafe) var delegate: NSNetServiceDelegate?Objective C
@property(assign) id< NSNetServiceDelegate > delegateОператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
-
Добавляет служба к указанному циклу выполнения.
Объявление
Параметры
aRunLoopЦикл выполнения, к которому можно добавить получатель.
modeРежим цикла выполнения, к которому можно добавить получатель. Возможные значения для
modeобсуждены в разделе «Constants»NSRunLoop.Обсуждение
Можно использовать этот метод в сочетании с
removeFromRunLoop:forMode:передать службу различному циклу выполнения. Вы не должны пытаться выполнить службу на многократные циклы выполнения.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Удаляет службу из данного выполненного цикла для данного режима.
Объявление
Параметры
aRunLoopЦикл выполнения, из которого можно удалить получатель.
modeРежим цикла выполнения, из которого можно удалить получатель. Возможные значения для
modeобсуждены в разделе «Constants»NSRunLoop.Обсуждение
Можно использовать этот метод в сочетании с
scheduleInRunLoop:forMode:передать службу различному циклу выполнения. Несмотря на то, что возможно удалитьNSNetServiceвозразите полностью от любого цикла выполнения и затем делайте попытку действий с ним, это - ошибка сделать так.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Попытки распространить получатель в сети.
Объявление
Swift
func publish()Objective C
- (void)publishОбсуждение
Этот метод сразу возвращается с успешностью или неуспешностью, обозначенной обратными вызовами делегату. Это эквивалентно вызову
publishWithOptions:с опциями по умолчанию (0).Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
См. также
-
Попытки распространить получатель в сети, с данными опциями.
Объявление
Swift
func publishWithOptions(_serviceOptions: NSNetServiceOptions)Objective C
- (void)publishWithOptions:(NSNetServiceOptions)serviceOptionsПараметры
serviceOptionsОпции для получателя. Поддерживаемые опции описаны в
NSNetServiceOptions.Обсуждение
Этот метод сразу возвращается с успешностью или неуспешностью, обозначенной обратными вызовами делегату.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
Запускает процесс решения для службы.
Оператор осуждения
Использовать
resolveWithTimeout:вместо этого.Объявление
Objective C
- (void)resolveОбсуждение
Попытки определить по крайней мере один адрес для службы. Этот метод сразу возвращается с успешностью или неуспешностью, обозначенной обратными вызовами делегату.
В Mac OS X v10.4, это вызовы метода
resolveWithTimeout:со значением тайм-аута5.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в OS X v10.2 и позже.
Осуждаемый в OS X v10.4.
-
Запускает процесс решения конечной продолжительности для службы.
Объявление
Swift
func resolveWithTimeout(_timeout: NSTimeInterval)Objective C
- (void)resolveWithTimeout:(NSTimeInterval)timeoutПараметры
timeoutМаксимальное количество секунд для попытки решения. Значение 0,0 не указывает тайм-аута и процесса решения неопределенной продолжительности.
Обсуждение
В течение периода решения отправляет служба
netServiceDidResolveAddress:делегату к каждому адресу это обнаруживает, что соответствует параметры службы. Как только тайм-аут поражен, служба отправляетnetServiceDidStop:делегату. Если никакое решение адресов в течение периода тайм-аута, отправляет службаnetService:didNotResolve:делегату.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
См. также
-
Порт, на котором служба прислушивается к соединениям. (только для чтения)
Обсуждение
Если объект был инициализирован путем вызова
initWithDomain:type:name:port:(было ли Вашим кодом или объектом браузера), тогда значение установлено, когда был сначала инициализирован объект.Если объект был инициализирован путем вызова
initWithDomain:type:name:, значение этого свойства не допустимо (-1) пока служба не была успешно разрешена (когдаaddressesне -nil).Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
Запускает контроль TXT-рекордных обновлений для получателя.
Объявление
Swift
func startMonitoring()Objective C
- (void)startMonitoringОбсуждение
Делегат должен реализовать
netService:didUpdateTXTRecordData:, когда запись TXT для получателя обновляется, который вызывают.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
См. также
-
Останавливает в настоящее время рабочую попытку опубликовать или разрешить службу.
Объявление
Swift
func stop()Objective C
- (void)stopОбсуждение
Делегат получит
netServiceDidStop:после того, как служба останавливается.Безопасно удалить все сильные ссылки к службе сразу после вызова
stop.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
-
Останавливает контроль TXT-рекордных обновлений для получателя.
Объявление
Swift
func stopMonitoring()Objective C
- (void)stopMonitoringОператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
См. также
-
Строка, содержащая имя хоста DNS для этой службы. (только для чтения)
Объявление
Swift
var hostName: String? { get }Objective C
@property(readonly, copy) NSString *hostNameОбсуждение
Это значение
nilпока служба не была разрешена (когдаaddressesне -nil).Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.4 и позже.
Типы данных
-
Эти константы указывают опции для сетевой службы.
Объявление
Swift
struct NSNetServiceOptions : RawOptionSetType { init(_rawValue: UInt) init(rawValuerawValue: UInt) static var NoAutoRename: NSNetServiceOptions { get } static var ListenForConnections: NSNetServiceOptions { get } }Objective C
enum { NSNetServiceNoAutoRename = 1 << 0 NSNetServiceListenForConnections = 1UL << 1 }; typedef NSUInteger NSNetServiceOptions;Константы
-
NoAutoRenameNSNetServiceNoAutoRenameУказывает, что сетевая служба не должна переименовывать себя в случае коллизии имени.
Доступный в OS X v10.5 и позже.
-
ListenForConnectionsNSNetServiceListenForConnectionsУказывает, что слушатель TCP должен быть запущен и для IPv4 и для IPv6 на порту, указанном этой службой. Если порт прослушивания не может быть открыт, служебные вызовы его делегат
netService:didNotPublish:метод для создания отчетов об ошибке.Слушатель поддерживает только соединения TCP. Если тип службы не заканчивается
_tcp, публикация перестала работать сNSNetServicesBadArgumentError.Каждый раз, когда клиент соединяется с сокетом слушания, служебные вызовы его делегат
netService:didAcceptConnectionWithInputStream:outputStream:метод с паройNSStreamобъекты.Доступный в OS X v10.9 и позже.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.5 и позже.
-
-
Если ошибка происходит, методы обработки ошибок делегата возвращают словарь со следующими ключами.
Объявление
Objective C
extern NSString *NSNetServicesErrorCode; extern NSString *NSNetServicesErrorDomain;Константы
-
NSNetServicesErrorCodeNSNetServicesErrorCodeЭтот ключ идентифицирует ошибку, произошедшую во время новой работы.
Доступный в OS X v10.2 и позже.
-
NSNetServicesErrorDomainNSNetServicesErrorDomainЭтот ключ идентифицирует инициатора ошибки, которая является любой
NSNetServiceвозразите или сетевой уровень Маха. Для большинства ошибок Вам не должно быть нужно значение, предоставленное этим ключом.Доступный в OS X v10.2 и позже.
-
-
Эти константы идентифицируют ошибки, которые могут произойти при доступе к сетевым службам.
Объявление
Swift
enum NSNetServicesError : Int { case UnknownError case CollisionError case NotFoundError case ActivityInProgress case BadArgumentError case CancelledError case InvalidError case TimeoutError }Objective C
typedef enum { NSNetServicesUnknownError = -72000, NSNetServicesCollisionError = -72001, NSNetServicesNotFoundError = -72002, NSNetServicesActivityInProgress = -72003, NSNetServicesBadArgumentError = -72004, NSNetServicesCancelledError = -72005, NSNetServicesInvalidError = -72006, NSNetServicesTimeoutError = -72007, } NSNetServicesError;Константы
-
UnknownErrorNSNetServicesUnknownErrorПроизошла неизвестная ошибка.
Доступный в OS X v10.2 и позже.
-
CollisionErrorNSNetServicesCollisionErrorСлужба не могла быть опубликована, потому что уже используется имя. Имя могло использоваться локально или в другой системе.
Доступный в OS X v10.2 и позже.
-
NotFoundErrorNSNetServicesNotFoundErrorСлужба не могла быть найдена в сети.
Доступный в OS X v10.2 и позже.
-
ActivityInProgressNSNetServicesActivityInProgressВ это время сетевая служба не может обработать запрос. Никакая дополнительная информация о состоянии сети не известна.
Доступный в OS X v10.2 и позже.
-
BadArgumentErrorNSNetServicesBadArgumentErrorНедействительный аргумент использовался при создании
NSNetServiceобъект.Доступный в OS X v10.2 и позже.
-
CancelledErrorNSNetServicesCancelledErrorКлиент отменил действие.
Доступный в OS X v10.2 и позже.
-
InvalidErrorNSNetServicesInvalidErrorСетевая служба была неправильно сконфигурирована.
Доступный в OS X v10.2 и позже.
-
TimeoutErrorNSNetServicesTimeoutErrorСетевая служба испытала таймаут.
Доступный в OS X v10.4 и позже.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.2 и позже.
-
