4

Windows または Mac OS X 端末で次のように入力すると...

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

... (たとえば) さまざまな Google チャット サーバーに関連する一連の SRV レコードを受け取ります。

この分野の経験があり、iPhone SDK を使用してこの情報 (ホスト名、ポート、重み、優先度) を処理する方法を知っている人はいますか? Bonjour クラスを試してみましたが、まだうまくいきません..

ありがとう!

4

3 に答える 3

11

DNSServiceDiscovery フレームワークを使用する必要があると思います。私は iPhone SDK を持っていませんが、Google で検索すると、iPhone で利用できることがわかります。

API の詳細については、Apple Developer Site を参照してください。

いくつかの(不完全な)サンプルコードも含めました:

#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);
}

独自のコールバック関数を提供する必要があります。またrdata、コールバックに送信されるフィールドはワイヤ形式であるため、SRV レコード フィールドから生データを自分でデコードする必要があることに注意してください。

于 2008-11-03T14:34:33.313 に答える
1

最善の策は、CFNetwork を使用して DNS クエリ ツールを実装することだと思います。

詳細については、こちらをご覧ください: http://developer.apple.com/documentation/Networking/Conceptual/CFNetwork/Introduction/chapter_1_section_1.html#//apple_ref/doc/uid/TP30001132-CH1-DontLinkElementID_24

于 2008-11-03T11:58:00.570 に答える
0

うーん、system()シミュレーターまたはデバイスで実行できないようです。NSTaskシミュレーターでは実行できますが、iPhone では実行できずNSTask、フレームワークの一部ではありませんFoundation

ISC BINDパッケージには BSD ライセンスがあります。可能であれば、digコードの関連部分をプロジェクトに直接ラップすることもできます。

于 2008-11-03T11:45:17.867 に答える