Avahi in c++

  • Hi Zusammen.
    Ich würde gerne die "avahi-browse" Funktion in meinen c++ Code integrieren.
    Auf Avahi.org findet man auch den Quellcode inklusive Beispielen.
    Jedoch nur in c. Zum konvertieren in c++ fehlen mir noch die nötigen Kenntnisse.
    Ich benötige ausschließlich die Funktion "avahi-browse --resolve" um die aktivierten Services zu sehen.
    Kann mir hier jemand weiter helfen?


    Schonmal Danke im Vorraus
    Gruß Patrick

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Ansonsten kannst du auch mal einen Blick in mein avahi4vdr-Plugin werfen:
    https://github.com/flensrocker/vdr-plugin-avahi4vdr


    Lars.

  • Als Aufruf meinst du mittels system()?
    Da bekomme ich aber keine Rückinfo.
    Obwohl, mit popen() würde es gehen.
    Oder gibt's noch ne andere Möglichkeit?


    Sorry, aber ich bin noch recht frisch in c++ ;)


    Deinen Code werde ich mir mal ansehen

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Du musst den Code schon an deine Bedürfnisse anpassen, aber C++ kann wunderbar reine C-Funktionen aufrufen.
    popen usw. sind nur für ganz hartnäckige Fälle... Lieber nicht. :)


    Lars.

  • Ok. Danke fürs "Richtung weisen".
    Ich werd mal nachlesen wie ich das hin bekomme.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Hi Lars.
    Die Idee hat nun lange geruht ;)
    Ich habe jetzt meine gewünschte "browse" Funktion mit Hilfe des Beispiels auf avahi.org am laufen, allerdings finde ich keine Möglichkeit die "simple_poll_loop" irgendwie wieder zu unterbrechen. Ich steh glaub ich mal wieder auf'm Schlauch.


    Gib mir doch bitte nochmal nen "Schubs"
    Danke dir

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Du musst dann avahi_simple_poll_quit aufrufen. Von wo aus man das am besten macht, hängt von der Anwendung ab. Am ehesten sind wahrscheinlich die Nachrichten AVAHI_BROWSER_ALL_FOR_NOW bzw. AVAHI_BROWSER_CACHE_EXHAUSTED geeignete Stellen.


    Lars.

  • Oh Mann wie peinlich :wand :wand :wand
    Manchmal sieht man halt den Wald vor lauter Bäumen nicht.
    Danke dir, klappt perfekt :tup


    Melde mich dann bei der nächsten Synapsen-blockade :D

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Hi vectra130,
    magst du dein Programm als Quellcode hier posten? Ich suche vielleicht genau diese Funktion. :)


    Viele Grüße,
    Uwe

  • Hi Uwe
    Klar, warum denn nicht. Erwarte nur nix wildes. Bin noch recht frisch in Sachen c++ (und erst recht in c)


    Ich bin eigentlich nur hin gegangen und habe das Example von avahi.org leicht angepasst das es mir nur schnell die nötigen Infos meines Servers ausliest. Ist momentan noch ne QuickAndDirty Lösung aber klappt prima ;)


    avahiBrowse.c


    Bauen musst du es mit

    Code
    gcc -Wall -lavahi-client avahiBrowse.c -o /tmp/avahi

    .
    Als Parameter kannst du dann den Service Namen angeben und erhälst direkt die info.


    Beispiel:

    Code
    root@rpi1:/usr/local/src/cplusplus/VDR/test# /tmp/avahi _VDR-Streaming-Server._tcp


    Ergebnis:

    Code
    _VDR-Streaming-Server._tcp "HOSTNAME=vdrserver.local" "IP=192.168.1.89" "PORT=6419" "plex_server=1" "epgd=1" "mysqld=1" "miniserv.pl=1" "lighttpd=1" "vdr=1" "HARDWARENAME=Dell_OptiPlex_GX620" "online=1" "MACADRESS=00:14:22:2d:0b:c3" "SYSTEMTYP=SERVER"


    Vielleicht hilft es dir ja weiter ;)

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Oh je. Das ist wieder ganz harter Stoff für mich :wand :P


    Danke für den Tip. Da muss ich mir allerdings erst mal wieder Beispiele Suchen bis ich da durch Blicke.
    Ich werd mal einen Blick in dein Plugin werfen und hoffen das das etwas Klarheit bringt.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Zitat

    So schwer sieht das nicht aus für mich


    Für mich als Anfänger aber schon ;(


    Ich werde es mir heute Abend mal genauer ansehen. Vielleicht steige ich ja doch da durch.

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

  • Hallo Patrick,

    Zitat

    Ich bin eigentlich nur hin gegangen und habe das Example von avahi.org leicht angepasst ...

    Vielen Dank für den ausführlichen Post, werde ich mir mal anschauen, ob das für meinen Zweck eventuell so ausreichtend ist. :)


    Gruß, Uwe

  • Vielen Dank für den ausführlichen Post,

    War froh das ich auch mal beim Thema "Programmieren" weiter helfen konnte ;)

    Gruß Patrick


    [size=8]* Meine NeverEndingProjects ;) *


    vectra --- glasslike ---

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!