objective-ciosbonjourhostnamensnetservice

NSNetService works fine, but can't get hostName, resolve causes error


I'm using Bonjour with an NSNetService to publish a server from my iPhone. It all works as expected, I can browse the pages I'm serving etc. However, on the iPhone I want to display the host name (i.e. the URL, like "myDevice.local."), so that one can also enter the address manually in a browser (useful for clients missing a bonjour discovery service). My understanding is that calling the method [myNetService hostName] should give me that address. However, this call always returns nil. I read on some forum that I first should resolve the service, however both [myNetService resolve] and [myNetService resolveWithTimeout:10] call the delegate method

- (void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict;

with the error

{
    NSNetServicesErrorCode = -72003;
    NSNetServicesErrorDomain = 10;
}

which apparently means that it is already resolved. Again, all this is happening while i can use the service. Also I can get the port, the domain, and the type of the service. The only other strange thing is that the call [myNetService addresses] returns an empty array.

I'm using SDK 3.1.3. Does anybody have an idea what I could be doing wrong?


Solution

  • You can get the hostname via [[NSProcessInfo processInfo] hostName] without resolving the netservice you just published.