NSNetServiceBrowser exactly for this.
In short, you need to do the following:
1) set the object as NSNetServiceBrowserDelegate 2) create the NSNetServiceBrowser object 3) assign a delegate 4) using browserObject.searchForServices(ofType: "_printer._tcp.", inDomain: "") , will receive various feedback from the delegate.
A simple test at my end got:
didFind: Samsung C460 Series (SEC001174EDCB63)
for delegate method:
func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool) { print("didFind: \(service.name)") }
source share