我将Bonjour与NSNetService结合使用,以便从iPhone发布服务器。一切正常,我可以浏览正在服务的页面等。但是,在iPhone上,我想显示主机名(即URL,例如“myDevice.local。”),以便也可以输入在浏览器中手动寻址(对于缺少bonjour发现服务的客户端很有用)。我的理解是,调用方法[myNetService hostName]应该给我该地址。但是,此调用始终返回nil。我在某个论坛上读到我首先应该解析该服务,但是[myNetService resolve]和[myNetService resolveWithTimeout:10]都调用了委托方法
- (void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict;
与错误
{
NSNetServicesErrorCode = -72003;
NSNetServicesErrorDomain = 10;
}
这显然意味着它已经解决。同样,所有这些都在我可以使用该服务时发生。我也可以获取端口,域和服务类型。唯一奇怪的是,调用[myNetService地址]返回一个空数组。
我正在使用SDK 3.1.3。有人知道我会做错什么吗?
最佳答案
您可以通过[[NSProcessInfo processInfo] hostName]获取主机名,而无需解析刚刚发布的网络服务。