Я использую NSNetServiceBrowser и могу найти список услуг, опубликованный AVAHI в «didFindService», который выглядит так: Появилась услуга: локальная. _https._tcp. TEMP-Mobileyes5-1C497B9ED382 -1 Появилась услуга: локальная. _https._tcp. TEMP-Mobileyes5-1C497B8E3916 -1 Появилась услуга: локальная. _https._tcp. TEMP-Mobileyes5-1C497B9ED380 -1Как получить IP и PORT услуги, опубликованной AVAHI в iOS swift?
Но не удалось найти IP-адрес и номер порта той же услуги. Я обнаружил, что код не достигает в «netServiceDidResolveAddress» Мой код:
class ServiceDiscovery : NSObject, NSNetServiceBrowserDelegate,NSNetServiceDelegate {
var _browser:NSNetServiceBrowser!
var _service: NSNetService!
var services = [NSNetService]()
override init() {
_browser = NSNetServiceBrowser()
super.init()
_browser.delegate = self
_browser.includesPeerToPeer = true
_browser.searchForServicesOfType("_https._tcp.", inDomain: "local.")
_browser.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
}
func netServiceBrowser(browser: NSNetServiceBrowser, didFindDomain domainString: String, moreComing: Bool) {
print(domainString)
}
func netServiceBrowser(aNetServiceBrowser: NSNetServiceBrowser, didFindService aNetService: NSNetService, moreComing: Bool) {
print("Service appeared: \(aNetService)")
services.append(aNetService)
aNetService.delegate = self
aNetService.resolveWithTimeout(5.0)
}
func netServiceBrowser(browser: NSNetServiceBrowser, didNotSearch errorDict: [String : NSNumber]) {
print(errorDict)
}
func netServiceBrowser(browser: NSNetServiceBrowser, didRemoveService service: NSNetService, moreComing: Bool) {
print("Service removed: \(service)")
}
func netService(sender: NSNetService, didNotResolve errorDict: [String : NSNumber]) {
print(errorDict)
}
func netServiceDidResolveAddress(sender: NSNetService) {
print(sender.addresses![0])
}
}
Благодарим за хорошее решение Aishwary, но, к сожалению, я не получал правильный адрес с вашим решением, поэтому сделал некоторые изменения в своем коде, и теперь он работает. –
все еще проблема есть метод FID, который не вызывается каждый раз в iPhone, а в iPad и симуляторах он называется каждый раз. я не знаю, почему –
'FUNC netServiceBrowser (_ браузер: служба NetServiceBrowser, didRemove: Netservice, moreComing: Bool) { печать ("didRemoveService") если пусть ие = self.services.index (из: службы) { себя. services.remove (по адресу: IX)! печать ("снимающего сервис") если moreComing { self.updateInterface() }} } ' –