2016-05-31 5 views
2

Ich plane, DNSServiceQueryRecord von Apple zu verwenden, um SRV-Einträge aufzulösen. Ich sehe, dass der an diese Methode übergebene Rückruf einmal pro Datensatz aufgerufen wird, der von der SRV-Suche zurückgegeben wird. Woher weiß ich, dass die Abfrage abgeschlossen wurde und alle Datensätze zurückgegeben wurden?iOS: DNS-SRV-Suche mit DNSServiceQueryRecord

Apples Dokumentation als Ihre Referenz.

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

+0

Die Abfrage wird unbegrenzt ausgeführt, bis Sie sie beenden, da jederzeit neue Dienste angezeigt werden können. Sie müssen entscheiden, wann Sie "genügend" Antworten haben. Dies kann der Fall sein, nachdem Sie eine Antwort erhalten haben, nach einer gewissen Zeit oder wenn der Benutzer/die Anwendung die Erkennungsansicht verlässt – Paulw11

+0

schnelle Frage, um absolut sicher zu sein: Ist dies eine blockierende oder nicht blockierende Methode? – adsun

+0

nicht blockierend. Deshalb hat es die Callback-Funktion – Paulw11

Antwort

1

Ich möchte das Verfahren „DNSServiceProcessResult“ darauf hinzuweisen, das Ergebnis zu verarbeiten DNS blockiert. Ich habe select() verwendet, um zu sehen, ob Daten im Socket zum Aufruf von DNSServiceProcessResult empfangen werden. Dadurch wird die Methode entsperrt. Ich überprüfe, ob es Daten im Socket für 2 Sekunden gibt und wenn ich keine Ergebnisse zurückbekomme, lehne ich die Abfrage ab.

+1

Das funktioniert für mich: http://stackoverflow.com/questions/22502729/resolving-srv-records-with-ioss-sdk Antwort von @ Bedeutung-Angelegenheiten – ssk