24
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BonjourでHello World

Last updated at Posted at 2015-01-19

はじめに

Bonjourは米アップルが開発したゼロ・コンフィギュレーション技術の実装で、主にLANにおいて何の設定も行わず機器を利用可能にすることができます。

Bonjourは、「サービスを発行する」と「サービスを検索する」に分かれています。
OS X/iOSは、どちらの役割にもなることができOS X同士、iOS同士、OS XとiOSの組み合わせが可能です。

今回は、OS Xがサービスを発行しiOSがサービスを検索したいと思います。

OS X(サービスを発行する)

ViewController.swift
import Cocoa

class ViewController: NSViewController, NSNetServiceDelegate {
	let service = NSNetService(domain: "", type: "_test._tcp", name: "Hello World", port: 1900)
	
	override func viewDidLoad() {
		super.viewDidLoad()

		// Do any additional setup after loading the view.		
		self.service.delegate = self
		self.service.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
		self.service.publish()
	}

	override var representedObject: AnyObject? {
		didSet {
		// Update the view, if already loaded.
		}
	}

	func netServiceDidPublish(sender: NSNetService) {
		println(sender.description)
	}
}

NSNetServiceでサービスを作成します。
domainは空文字を指定するとローカル全体になります。
typeには任意の文字列を指定可能で、_文字列._プロトコルという形式が一般的のようです。

iOS(サービスを検索する)

ViewController.swift
mport UIKit

class ViewController: UIViewController, NSNetServiceBrowserDelegate {
	let browser = NSNetServiceBrowser()
	
	override func viewDidLoad() {
		super.viewDidLoad()
		// Do any additional setup after loading the view, typically from a nib.
		
		self.browser.delegate = self
		self.browser.searchForServicesOfType("_test._tcp", inDomain: "")
	}

	override func didReceiveMemoryWarning() {
		super.didReceiveMemoryWarning()
		// Dispose of any resources that can be recreated.
	}

	func netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser, didFindService aNetService: NSNetService, moreComing: Bool) {
		
		println(aNetService.name)
	}

}

NSNetServiceBrowserを作成します。
typeとinDomainにはOS Xで指定したものと同じものを指定します。

実行

OS Xのアプリケーションを起動してからiOSのアプリケーションを実行します。
iOSのアプリケーションにHello Worldと表示されれば成功です。

次回

次回は、iOSアプリケーションから見つけたOS Xに簡単なメッセージを送信したいと思います。

24
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?