views:

1676

answers:

5

In either a Windows or Mac OS X terminal if you type...

nslookup -type=SRV _xmpp-server._tcp.gmail.com

... (for example) you will receive a bunch of SRV records relating to different google chat servers..

Does anyone have any experience in this area and possibly know how to service this information (hostname, port, weight, priority) using the iPhone SDK? I have experimented with the Bonjour classes, but as yet have had no luck..

Thanks!

A: 
Alex Reynolds
That will not work, you cannot fork applications on the phone.
Louis Gerbarg
A: 

Hmm, looks like I can't run system() on the Simulator or the device. I can run NSTask on the Simulator, but not the iPhone, and NSTask is not part of the Foundation framework.

The ISC BIND package has a BSD license. If feasible, perhaps relevant parts of the dig code could be wrapped into the project directly.

Alex Reynolds
+1  A: 

I think your best bet is to implement a DNS query tool using CFNetwork.

Try to read more about this here: http://developer.apple.com/documentation/Networking/Conceptual/CFNetwork/Introduction/chapter_1_section_1.html#//apple_ref/doc/uid/TP30001132-CH1-DontLinkElementID_24

Marius Ursache
+2  A: 

I believe you need to use the DNSServiceDiscovery framework. I don't have the iPhone SDK, but a Google search suggests that it is available on the iPhone.

See the Apple Developer Site for full API details.

I've included some (incomplete) sample code too:

#include <dns_sd.h>

int main(int argc, char *argv[])
{
   DNSServiceRef sdRef;
   DNSServiceErrorType res;

   DNSServiceQueryRecord(
     &sdRef, 0, 0,
     "_xmpp-server._tcp.gmail.com",
     kDNSServiceType_SRV,
     kDNSServiceClass_IN,
     callback,
     NULL
  );

  DNSServiceProcessResult(sdRef);
  DNSServiceRefDeallocate(sdRef);
}

You'll need to provide your own callback function, and note that the rdata field sent to the callback is in wire-format, so you'll have to decode the raw data from the SRV record fields yourself.

Alnitak
A: 

Thanks,

I used the DNSServiceQueryRecord technique...

good example here http://www.opensource.apple.com/darwinsource/10.3.1/mDNSResponder-58/mDNSMacOSX/SampleUDSClient.c

adam
please upvote useful answers...
Alnitak