IP Adresse von Netzwerkdruckern herausfinden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hier ein kleines Beispiel, das bei mir funktioniert. Vielleicht hilft es Dir ja, rauszufinden, was bei Dir anders ist:

    Quellcode

    1. #import <Foundation/Foundation.h>
    2. @interface MyDelegate : NSObject<NSNetServiceBrowserDelegate>
    3. @end
    4. @implementation MyDelegate
    5. - (void)netServiceBrowserWillSearch:(NSNetServiceBrowser *)aNetServiceBrowser {
    6. NSLog(@"netServiceBrowserWillSearch");
    7. }
    8. - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict {
    9. NSLog(@"didNotSearch");
    10. }
    11. - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindDomain:(NSString *)domainString moreComing:(BOOL)moreComing {
    12. NSLog(@"didFindDomain %@",domainString);
    13. }
    14. - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing {
    15. NSLog(@"didFindService %@",[aNetService name]);
    16. }
    17. @end
    18. int main (int argc, const char * argv[]) {
    19. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    20. NSLog(@"Start");
    21. NSNetServiceBrowser *serviceBrowser;
    22. NSDate* waitEnd = [NSDate dateWithTimeIntervalSinceNow:10.0];
    23. serviceBrowser = [[[NSNetServiceBrowser alloc] init] autorelease];
    24. MyDelegate* delegate = [[[MyDelegate alloc] init] autorelease];
    25. [serviceBrowser setDelegate:delegate];
    26. [serviceBrowser searchForServicesOfType:@"_http._tcp." inDomain:@""];
    27. [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:waitEnd];
    28. [serviceBrowser stop];
    29. NSLog(@"End");
    30. [pool drain];
    31. return 0;
    32. }
    Alles anzeigen

    Ergebnis bei mir:

    Start
    netServiceBrowserWillSearch
    didFindService Canon MX870 series _XXXXXXXXXXXX
    End
    Multigrad - 360°-Produktfotografie für den Mac
  • mattik schrieb:

    Hier ein kleines Beispiel, das bei mir funktioniert. Vielleicht hilft es Dir ja, rauszufinden, was bei Dir anders ist:

    Vielen Dank für dein Beispiel!

    Ich habe es mal bei mir ausprobiert, leider mit demselben Ergebnis. Zwischen Start und Ende vergehen nur Bruchteile:

    Quellcode

    1. 2011-12-18 21:10:54.527 NetServiceBrowser[274:707] Start
    2. 2011-12-18 21:10:54.530 NetServiceBrowser[274:707] netServiceBrowserWillSearch
    3. 2011-12-18 21:10:54.531 NetServiceBrowser[274:707] End


    Was für ein Projekt hast du angelegt?
  • Foundation Command Line Tool. Wenn's kompiliert sollte das aber keine große Rolle spielen.

    Das Programm ist in dieser Version bei mir auch sofort fertig. Bei _http._tcp scheint er das Ergebnis zu cachen und dann die RunLoop zu beenden sobald die Suche fertig ist. Änder mal "_http._tcp." in z.B. "_printer._ctp." - dann läuft es die angegebene Zeit. Ich finde dann zwar keine Ergebnisse, das liegt aber wohl eher daran, dass ich hier keine habe.
    Multigrad - 360°-Produktfotografie für den Mac
  • Das hatte ich schon probiert ;) Es läuft genauso durch (ohne Ergebnis).

    Mit dem command line tool klappt es hingegen:

    Quellcode

    1. dns-sd -B _printer._tcp
    2. Browsing for _printer._tcp
    3. Timestamp A/R Flags if Domain Service Type Instance Name
    4. 22:23:23.675 Add 2 5 local. _printer._tcp. Samsung ML-331x Series (Samsung ML-3310)
  • Hallo !

    Habe das Beispiel von @mattik probiert und es verhält sich wie von Ihm beschrieben, für 10 sek. "netServiceBrowserWillSearch", ich benutze allerdings auch die gleiche Version 10.6.8 und Xcode 3.2.6. Teste morgen im Büro, da habe ich auch dann Geräte dran.
  • Bei mir läuft 10.7.2 und das aktuellste Xcode 4.2.1.

    @mattik: Schade, aber danke nochmals für deine Hilfe bisher! Wer natürlich toll, wenn das noch ein paar Leute so auf die Schnelle testen könnten.

    @ramo: Danke für den Aufwand! Wäre echt super, wenn du das auch auf einer aktuelleren Installation testen könntest

    Kann es vielleicht mit der Netzwerkkonfiguration zusammenhängen? Im Augenblock versuche ich es immer mit WLAN. Wird der Prozess vielleicht von einer Firewall geblockt? Wie gesagt, ich kenne mich noch nicht sehr gut aus mit dem Mac.
  • Änder mattiks Code mal so ab:

    Quellcode

    1. while ([[NSDate date] compare: waitEnd] == NSOrderedAscending)
    2. [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:waitEnd];

    runMode:beforeDate: kommt auch zurück wenn eine InputSource in dem Modus feuert.

    Chris

    Edit:
    Xcode 4.2.1 und Lion 7.2
    Ich mach solche Tests immer im applicationDidFinishLaunching: von einer Cocoa App.
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.