• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

[Cocoa] Mit Bonjour alle Clients im Netzwerk finden

.mitro

Allington Pepping
Registriert
14.09.04
Beiträge
193
Hi,

nochmals vielen Dank an alle, die mir letztes Mal hier geholfen haben. Langsam gewöhn ich mich an Cocoa/ObjC/XCode (geht schneller als ich dachte).

Konkrete Frage: Ich möchte alle Clients in meinem Netzwerk finden (bzw. alle, die Bonjour unterstützen). Habe zu diesem Zweck bereits alles notwendige gebastelt (einen NSNetServiceBrowser inklusive Delegate und so weiter).

Funktioniert auch (getestet mit "_printer._tcp"), die Frage ist nur, nach welchem Service suche ich, wenn ich einfach nur die Clients finden möchte, die online sind? Dienste wie http o.Ä. sind ja nicht verlässlich, da sie deaktiviert oder nicht vorhanden sein können, obwohl der Rechner läuft.

Oder löst man dieses Problem generell anders (in Cocoa, versteht sich)?

Und kommt mir nicht mit einem Broadcast-Ping ;)

Vielen Dank und liebe Grüße

.mitro
 

.mitro

Allington Pepping
Registriert
14.09.04
Beiträge
193
Um mir die Frage selbst zu beantworten: Dürfte mit "_workstation._tcp" funktionieren.

Mich quälen aber noch zwei andere Fragen:

1)
Warum kann ich vom Delegate aus, der ein Outlet hat, das mit einem NSProgressIndicator verbunden ist, diesen nicht starten/stoppen? Wenn ich den Umweg über einen Controller gehe, klappt's.

2)
Ist es unverantwortlich, den NSNetServiceBrowser über die komplette Laufzeit des Programms im Hintergrund mitlaufen zu lassen (um Änderungen der verfügbaren Clients zu überwachen)?

Nochmals danke und liebe Grüße

.mitro
 

Bölzebub

Querina
Registriert
27.05.05
Beiträge
180
2)
Ist es unverantwortlich, den NSNetServiceBrowser über die komplette Laufzeit des Programms im Hintergrund mitlaufen zu lassen (um Änderungen der verfügbaren Clients zu überwachen)?
Wenn ich mich richtig erinnere - ist schon ne Weile her, dass ich mich mal mit Rendezvous befasst hab - wird nur einmal am Anfang aktiv nach Services sucht, danach wird nur noch darauf gewartet, ob sich irgendwas ändert (neuer Service, Service gibt es nicht mehr). Von daher sollte es kein Problem sein, einen NSNetServiceBrowser im Hintergrund laufen zu lassen.
 

seb2

Gast
Genau. Läuft über die Delegate-Methoden.

Zu Deinem ersten Problem: Dein Outlet ist nicht zufälligerweise nil? Oder versuchst Du den ProgressIndicator zu starten bevor das Nib komplett geladen ist?
 

.mitro

Allington Pepping
Registriert
14.09.04
Beiträge
193
Wäre auch meine erste Vermutung gewesen, dass das NIB noch nicht fertig geladen ist. Allerdings wird die Funktion zum Starten der Suche (und damit zum Starten des progressIndicators) erst in der awakeFromNib getriggert, womit man das ausschließen können müsste.

Meine Outlets stimmen auch (soweit ich das beurteilen kann), aber ich kann von meinem Delegate aus auf gar kein Interface-Element so richtig zugreifen (gibt zwar keinen Fehler, es passiert aber auch nichts).

Oder ist das ohnehin ein unschöner Cocoa-Stil und der Delegate sollte alles über einen separaten Controller abwickeln?

Danke und liebe Grüße

.mitro