2016-05-31 22 views
2

アップルのDNSServiceQueryRecordを使用してSRVレコードを解決する予定です。このメソッドに渡されたコールバックは、SRV参照から返されるレコードごとに1回呼び出されることがわかります。クエリが完了し、すべてのレコードが返されたことをどのように知ることができますか?iOS:DNSServiceQueryRecordを使用したDNS SRVルックアップ

参考までにAppleのマニュアル。

https://developer.apple.com/library/mac/documentation/Networking/Reference/DNSServiceDiscovery_CRef/index.html#//apple_ref/c/func/DNSServiceQueryRecord

+0

クエリは、いつでも新しいサービスが表示されるため、終了するまで無期限に実行されます。あなたは「十分な」答えがいつあるかを判断する必要があります。これは、一定の期間が経過した後、またはユーザ/アプリケーションがディスカバリビューを終了したときに、1つの回答があった後になる可能性があります。 – Paulw11

+0

完全に確実な質問:これはブロッキングかノンブロッキングの方法ですか? – adsun

+0

ノンブロッキングそれはコールバック関数を持っている理由です – Paulw11

答えて

1

私はDNSの結果がブロックされて処理する方法「DNSServiceProcessResult」を指摘したいと思います。 DNSServiceProcessResultを呼び出すためにソケットに受信されたデータがあるかどうかを調べるためにselect()を使用しました。これにより、メソッドはブロック解除されます。ソケットに2秒間データがあるかどうかを確認し、結果が返ってこない場合はクエリをキャンセルします。

+1

これは私のために働く:http://stackoverflow.com/questions/22502729/resolving-srv-records-with-ios-sdk @意味の問題 – ssk

関連する問題