Problems getting Bonjour TXT record information

Q: Why would CFNetServiceGetProtocolSpecificInformation, CFNetServiceGetTXTData, protocolSpecificInformation, or TXTRecordData return NULL?

A: The above functions will return NULL if you fail to resolve the CFNetServiceRef or NSNetService. Simply use CFNetServiceResolve or resolve in order to resolve the service first, and after your resolve callback is called, you can then use CFNetServiceGetProtocolSpecificInformation or protocolSpecificInformation to retrieve the TXT record information.

Starting in Mac OS X 10.4, the previously mentioned APIs are deprecated, so you should use the newer more efficient CFNetServiceResolveWithTimeout or resolveWithTimeout: to resolve the service, followed by CFNetServiceGetTXTData or TXTRecordData to retrieve the TXT record information. The newer TXT record retrieval APIs return a CFDataRef or NSData object that can be converted into a CFDictionaryRef of NSDictionary for easy parsing into key/value pairs.

If you decide to monitor the TXT record information by using CFNetServiceMonitorStart or startMonitoring, then you don't need to resolve the service first. The monitoring APIs were introduced in Mac OS X 10.4.

Document Revision History

DateNotes
2005-07-06Explains why you might have problems retrieving TXT record information from a CFNetServiceRef or NSNetService.

Posted: 2005-07-06


Did this document help you?
Yes: Tell us what works for you.
It’s good, but: Report typos, inaccuracies, and so forth.
It wasn’t helpful: Tell us what would have helped.