0

我有一个使用 JmDNS 的基于 Java 的服务器,它是从 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 设备解析吗?

4

1 回答 1

0

问题出在 Java 服务器端。它通过调用 InetAddress.getLocalHost() 进行注册。这是返回环回地址。

我根据这个问题修改了我的代码以找到一个非环回地址: IP地址未在java中获得

于 2017-03-01T23:35:39.987 回答