Created
May 23, 2019 09:06
-
-
Save jessehao/14682325835465e5c017715092b4f758 to your computer and use it in GitHub Desktop.
A simple example for Bonjour
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// BonjourClient.swift | |
// BonjourClient | |
// | |
// Created by Jesse Hao on 2019/5/23. | |
// Copyright © 2019 ONES. All rights reserved. | |
// | |
import Foundation | |
class ServiceAgent : NSObject, NetServiceDelegate { | |
func netServiceDidResolveAddress(_ sender: NetService) { | |
if let data = sender.txtRecordData() { | |
let dict = NetService.dictionary(fromTXTRecord: data) | |
print("Resolved: \(dict)") | |
print(dict.mapValues { String(data: $0, encoding: .utf8) }) | |
} | |
} | |
} | |
class BrowserAgent : NSObject, NetServiceBrowserDelegate { | |
var currentService:NetService? | |
let serviceAgent = ServiceAgent() | |
func netServiceBrowser(_ browser: NetServiceBrowser, didFindDomain domainString: String, moreComing: Bool) { | |
print("domain found: \(domainString)") | |
} | |
func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool) { | |
print("service found: \(service.name)") | |
self.currentService = service | |
service.delegate = self.serviceAgent | |
service.resolve(withTimeout: 5) | |
} | |
} | |
let agent = BrowserAgent() | |
let browser = NetServiceBrowser() | |
browser.delegate = agent | |
browser.searchForServices(ofType: "_dragon._tcp", inDomain: "local.") | |
browser.schedule(in: RunLoop.main, forMode: .common) | |
RunLoop.main.run() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// BonjourService.swift | |
// BonjourService | |
// | |
// Created by Jesse Hao on 2019/5/23. | |
// Copyright © 2019 Snoware. All rights reserved. | |
// | |
import Foundation | |
class ServiceAgent : NSObject, NetServiceDelegate { | |
func netServiceDidPublish(_ sender: NetService) { | |
print("Bonjour Service published!") | |
} | |
func netService(_ sender: NetService, didNotPublish errorDict: [String : NSNumber]) { | |
print("Failed to publish Bonjour Service. error: \(errorDict)") | |
} | |
} | |
let agent = ServiceAgent() | |
let runloop = RunLoop.main | |
let service = NetService(domain: "local.", type: "_dragon._tcp", name: "dragon", port: 2333) | |
service.schedule(in: runloop, forMode: .common) | |
service.delegate = agent | |
let dictData = "Hi".data(using: String.Encoding.utf8) | |
let data = NetService.data(fromTXTRecord: ["key":dictData!]) | |
print("set data: \(service.setTXTRecord(data))") | |
service.publish() | |
runloop.run() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How to use this code? @jessehao