0
我有一個基於Java的服務器,使用從iOS應用程序中發現的JmDNS。從Bonjour網絡中解析主機名
發現工作正常,這是得到由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'後不改變的主機名沒有影響。 – vadian
當我檢查地址字段中返回的地址時,我發現它是「127.0.0.1」,從手機到服務器的連接似乎沒有用處。 – zorro2b
您必須從'netServiceDidResolveAddress'方法的'addresses'數組中提取IPV4或IPv6地址,該方法是包含'struct sockaddr'對象的'(NS)Data'對象的數組。 – vadian