HOME > CONIT Labs.

CONIT Labs.

iPhoneとMacとBonjour


こんにちは開発TEAM佐々木です。
みなさんご存知のように、只今米国ではMacWorldExpoが開催されてますが、
iphone関連は大盛況のようで、喜ばしい限りですね。
今回はMacOSのBonjour&NetServiceAPIが大変便利な件についてお話したいと思います。
Bonjourとは
Bonjourは元はIETFの中で検討されていた「Zeroconf」という技術をベースに米Apple社が改良した結果、
現在では「Zero Configuration Networking」としてIETFにより標準化されているネットワーク技術である。
特徴は、TCP/IPネットワークの基盤上で何も設定しなくてもネットワークが利用可能となることです。
(ひと昔前にAppleのCMで、MACはケーブルを繋ぐだけでOK!とうたっていたのが、Bonjourの事だったのかと)
機能としては、IPアドレスとホスト名の自動割り当て、公開しているサービスの自動探索が挙げられます。
例としてIPアドレスの割り当ては、決められたネットワークアドレスに対して、未使用のホストアドレスを自動的に
探して割り当てるそうです。
(Wikipediaから引用)
要するに、生のTCP/IPだと自動的に設定させるためには
アドレス割り当て   ー>DHCPサーバ
ホスト名の解決    ー>DNSサーバ
公開サービスの検索  ー>ポートスキャン?or Wellknownポートへの試行
と何かしらのサーバを設置しないとできないのですが、ことローカルネットワークに関しては
なんにも設定&サーバが要らないですね。便利です。
NetServiceプログラミング
MacOSでは、NSNetSerciceフレームワークの
NSNetServiceクラス,NSNetServiceBrowserクラスを利用する事で
Bonjourのサービス自動探索機構の恩恵にあやかる事ができます。
もう少し具体的にいうと、サービス提供側では、
通常のソケットプログラミングでサーバソケット作成する手順+NetServiceクラスのPublishを行う。
クライアント側では、NetServiceBrowserクラスで検索して、それに対してソケット接続を行う。
まあビックリ[:ぎょ:]この手順が簡単だこと、コーディングが楽[:ぽわわ:]なことに感激をしています。
Bonjourがなかったら、ブロードキャストして反応したやつに接続しなきゃいけないんですけど、
NSNetServiceBrowserにサービス発見イベント、サービス消滅イベントというのがあって
それぞれのハンドラをDelegateとして実装しとけば都度コールバックしてくれる仕組み。
ローカルネットワークのみで使う、IPMessager程度なら簡単にできそうなAPI群が用意されてます。

コメントを残す

コニット開発室

CONIT Official Tweet

CONIT Facebook FanPage

CONIT BLOG

株式会社コニット

SamuraiSmartphoneServices

Buy and take only medicines from online pharmacy ,]}$ drugs online has affordable prices. Brand name drugs Canadian pharmacy [*}: compare drug prices Canada delivering medicines at your door. Free online consultation at https://canada-pharmacy-store.com <;) order cialis highest value and quality. Is it legal to mail prescription drugs? Yes, Canadian drugs [.($ order viagra . After ordering you will be contacted by our managers and agree on the delivery details.