gpt4 book ai didi

ios - Bonjour 服务发现找不到主机

转载 作者:行者123 更新时间:2023-11-28 06:24:50 29 4
gpt4 key购买 nike

我正在尝试在 Swift3 中实现 Bonjour NetServiceBrowser,以便在我的网络上发现主机。

当我使用以下命令在终端中手动搜索时,我会找到主机。

dns-sd -B

但是,当我尝试在 Swift 中使用 NetServiceBrowser 时(请参阅下面的代码),它只会打印“开始搜索...”。我按照 Bonjour documentation 实现了这个类.

我不明白出了什么问题。 Bonjour 对 Swift 的工作方式有什么不同吗?我在网上找不到有效的例子。我在 domain(“local”、“local.”、“”)或 name 上尝试了几种变体。

class ZeroConf: NSObject, NetServiceBrowserDelegate, NetServiceDelegate{

var browser: NetServiceBrowser!
var services = [NetService]()
let domain = "local"
let name = "_http._tcp"



func startSearch(){
self.services.removeAll()
self.browser = NetServiceBrowser()
self.browser.delegate = self
self.browser.searchForServices(ofType: name, inDomain: domain)
}


func netService(_ sender: NetService, didNotPublish errorDict: [String : NSNumber]) {
debugPrint(errorDict)
}

func netServiceBrowserWillSearch(_ browser: NetServiceBrowser) {
print("starting search..")
}

func netServiceBrowserDidStopSearch(_ browser: NetServiceBrowser) {
print("Stoped search")
}

func netServiceBrowser(_ browser: NetServiceBrowser, didNotSearch errorDict: [String : NSNumber]) {
print("error in search")
debugPrint(errorDict)
}

func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool) {
print("found service")
services.append(service)
debugPrint(service)
}

func netServiceBrowser(_ browser: NetServiceBrowser, didRemove service: NetService, moreComing: Bool) {
if let ix = self.services.index(of:service) {
self.services.remove(at:ix)
print("removing a service")
}
}

func netServiceDidResolveAddress(_ sender: NetService) {
print("did resolve address")
}
}

最佳答案

我发现了为什么它对我不起作用。我试图从主循环执行代码,而它显然应该从不同的线程调用。因此,我将 startSearch 中的代码更改为

DispatchQueue.main.async {
self.browser.schedule(in: RunLoop.current, forMode: .defaultRunLoopMode)
self.browser.searchForServices(ofType: self.name, inDomain: self.domain)
RunLoop.current.run()
}

关于ios - Bonjour 服务发现找不到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272302/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com