J'utilise NSNetServiceBrowser et est capable de trouver la liste de services publiée par AVAHI dans "didFindService" qui ressemble à: Le service est apparu: local. _https._tcp. TEMP-Mobileyes5-1C497B9ED382 -1 Le service est apparu: local. _https._tcp. TEMP-Mobileyes5-1C497B8E3916 -1 Le service est apparu: local. _https._tcp. TEMP-Mobileyes5-1C497B9ED380 -1Comment obtenir IP et PORT d'un service publié par AVAHI dans iOS swift?
Mais impossible de trouver l'adresse IP et le numéro de port du même service. J'ai trouvé que le code n'atteint pas dans « netServiceDidResolveAddress » Mon code est:
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])
}
}
Merci pour la bonne solution Aishwary, mais malheureusement je n'obtenais pas la bonne adresse avec votre solution, j'ai donc fait quelques changements dans mon code et maintenant ça marche. –
encore problème est didFind méthode ne pas être appelé à chaque fois dans l'iPhone, mais dans l'iPad et les simulateurs, il est appelé à chaque fois. Je ne sais pas pourquoi –
'func netServiceBrowser (_ navigateur: NetServiceBrowser, didRemove service: NetService, moreComing: Bool) { print (" didRemoveService ") si let ix = self.services.index (de: service) { self. services.remove (à: ix)! print ("la suppression d'un service") si moreComing { self.updateInterface() }} } ' –