【发布时间】:2019-11-13 19:34:33
【问题描述】:
我可以使用NSNetServiceBrowser 在我的本地 wi-fi 中查找并解析 mDNS 服务。但是在公共Wi-Fi网络中,同样的代码只能找到服务,然后无法解析服务。
即以下委托回调成功:
- (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser
didFindService:(NSNetService *)aNetService
moreComing:(BOOL)moreComing
但永远不会调用以下回调:
- (void)netServiceDidResolveAddress:(NSNetService *)sender
相反,我得到了以下调用:
- (void)netService:(NSNetService *)sender
didNotResolve:(NSDictionary<NSString *,NSNumber *> *)errorDict
而errorDict是:
{
NSNetServicesErrorCode = "-72007"; // timeout
NSNetServicesErrorDomain = 10;
}
为了调试,我使用WireShark捕获UDP数据包,发现有一个mDNS响应数据包,其中包含主机IP和端口的SRV记录。
我的问题是:iOS Bonjour 究竟在后台解析服务是什么?为什么在查找服务时没有公开更多信息? (公共 Wi-Fi 网络有何不同?)
iOS 版本:12 和 13
【问题讨论】: