В настоящее время я использую NetServiceBrowser
, чтобы найти службы Bonjour и разрешить соответствующие адреса и порт.
Глядя на усложнение своего кода, я наткнулся на NWBrowser
, который, кажется, обеспечивает очень простой интерфейс чтобы разобраться с открытием Bonjour.
Однако browseResultsChangedHandler
отправляет обратно результаты и изменения, которые содержат конечную точку перечисления case service
. Я пытаюсь получить информацию об адресе и порте из результатов, но, похоже, NWEndpoint
должен быть типа enum .hostPort.
В идеале я бы использовал конечную точку для подключения к серверам, используя NWConnection
однако я использую другую библиотеку, которая не обрабатывает NWEndpoint
напрямую.
Существуют ли (простые) способы получения адресов и информации о портах из результата NWEndpoint.service
?
import Foundation
import Network
let browser = NWBrowser(for: .bonjour(type: "_http._tcp", domain: ""), using: NWParameters())
browser.browseResultsChangedHandler = { (results, changes) in
print("Results:")
for result in results
{
if case .service(let service) = result.endpoint
{
debugPrint(service)
}
else
{
assert(false, "This nevers gets executed")
}
}
print("Changes:")
for change in changes
{
if case .added(let added) = change
{
if case .service(let service) = added.endpoint
{
debugPrint(service)
}
else
{
assert(false, "This nevers gets executed")
}
}
}
}
browser.start(queue: DispatchQueue.main)
sleep(3)