У меня есть сервер на основе Java, использующий JmDNS, который обнаруживается из приложения iOS.
Обнаружение работает нормально, и это обратный вызов, который выполняется NetServiceDelegate для записи деталей:
public func netServiceDidResolveAddress(_ service: NetService) {
guard let hostName = service.hostName else {
return
}
mockServerUrl = "http://\(hostName):\(service.port)/analytics"
Logger.log("Using mock server at \(mockServerUrl)", forLevel: .info)
}
В результате URL-адрес выглядит следующим образом: http://az-mbp-ether-lan.local.:9090
Теперь я клянусь, что это сработало, однако теперь, когда я пытаюсь отправить данные на эту конечную точку с помощью Alamofire, время ожидания постоянно истекает.
Замена имени хоста жестко закодированным IP-адресом целевой машины заставляет его снова работать, поэтому нет фундаментальной проблемы с кодом, отправляющим данные.
Должен ли адрес указанной выше формы заканчиваться на ".local." разрешаться с устройства iOS в той же сети, что и целевой сервер?
netServiceDidResolveAddres
предназначен для разрешения адресов IPv4 и IPv6. Это не влияет на имя хоста, которое не меняется послеdidFindService
. - person vadian   schedule 01.03.2017addresses
в методеnetServiceDidResolveAddress
, который представляет собой массив(NS)Data
объектов, содержащихstruct sockaddr
объектов. - person vadian   schedule 02.03.2017