2011年12月12日月曜日

DNS-SD(DNS based Service Discovery) API の実装サンプル

Mac OS X / iOS の場合、Bonjour API(NSNetService and CFNetService) が用意されているのでそれを使うのが一番簡単だが、例えば特定のネットワークインターフェイスだけに限定したいといった細やかな設定ができない(らしい)。DNS Service Discovery API (dns_sd.h) を使うとそういった細やかな制御ができる。このサンプルでは DNS-SD API を使い、Bonjour Service の登録、ブラウズ、サービス解決を行う。サンプルは Mac OS X 10.7 用だが、コア部分(サービス登録・ブラウズ・名前解決のクラス)は iOS 5 でも利用できる。


サンプルの実行はコマンドラインから。こんな感じ。
$ build/Debug/DNSSDObjects -r _foo._tcp 12345
  :
$ build/Debug/DNSSDObjects -b _foo._tcp
  :
$ build/Debug/DNSSDObjects -l 'Bruno' '_foo._tcp' 'local.'


サンプルを実用的に利用する指針として挙げられていた項目:
operating on a specific interface
enabling support for Bluetooth browsing on iOS 5.0 and later (kDNSServiceFlagsIncludeP2P)
supporting TXT records
monitoring record changes
discovering browsable domains, and browsing within those domains
resolving to IP addresses
registering or querying for arbitrary DNS records
shared connections (kDNSServiceFlagsShareConnection)

0 件のコメント:

コメントを投稿