avahi-browse

Antworten
Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

avahi-browse

Beitrag von AlterPascaler »

Hallo Lazarus Freunde,

damit möchte ich die Teilnehmer im lokalen Netzwerk finden, die dieses Protokoll unterstützen. Ähnliche Protokolle sind Bonjur (Apple), mDNS (Windows).

Da ich von Hause aus faul bin, hoffe ich das sich schon jemand die Arbeit gemacht hat. Habe mit mal die Header Dateien angeschaut, das sieht nach verdammt viel Arbeit aus.

Wenn ihr so etwas schon mal gesehen habt, dann nur zu, helft mir.
Viele Grüße
AlterPascaler

Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: avahi-browse

Beitrag von AlterPascaler »

OK, die Resonanz ist gering! Es scheint nicht viel für avahi-browse und Pascal zu geben. :(
Viele Grüße
AlterPascaler

Benutzeravatar
theo
Beiträge: 10697
Registriert: Mo 11. Sep 2006, 19:01

Re: avahi-browse

Beitrag von theo »

Ich habe wirklich Null Ahnung davon, aber warum benutzt die nicht einfach die auf Linux vorhandenen Tools in z.B. "avahi-utils"?
Geht das nicht?

https://wiki.lazarus.freepascal.org/Exe ... l_Programs

Mathias
Beiträge: 6693
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: avahi-browse

Beitrag von Mathias »

AlterPascaler hat geschrieben: Mi 20. Nov 2024, 11:13 OK, die Resonanz ist gering! Es scheint nicht viel für avahi-browse und Pascal zu geben. :(
Was evtl. eine Alternative ist, eine C-lib-Binding.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: avahi-browse

Beitrag von AlterPascaler »

@theo
So mache ich das z.Zt., ist aber nicht 24/7 stabil. Nach einigen Tagen geht es nicht mehr.

@Mathias,
Habe ich auch schon drüber nachgedacht. Die includes sind für avahi 42 Dateien. Ein schneller Test mit h2pas und h2paswizard gaben keine gut Ergebnisse. Aber eigentlich brauche ich nur den avahi-client, da sind es nur 3 Dateien.
Also das nochmal anschauen!
Viele Grüße
AlterPascaler

Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: avahi-browse

Beitrag von AlterPascaler »

@Mathias

Ne, in client.h hat man wieder #includes
(
#include <inttypes.h>
#include <avahi-common/cdecl.h>
#include <avahi-common/address.h>
#include <avahi-common/strlst.h>
#include <avahi-common/defs.h>
#include <avahi-common/watch.h>
#include <avahi-common/gccmacro.h>
)

Und so weiter. Praktisch ist anders.
Viele Grüße
AlterPascaler

Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: avahi-browse

Beitrag von AlterPascaler »

Vielleicht geht's über den DBus, habe da was gefunden.
Versuch macht klug! :lol:
Viele Grüße
AlterPascaler

Benutzeravatar
theo
Beiträge: 10697
Registriert: Mo 11. Sep 2006, 19:01

Re: avahi-browse

Beitrag von theo »

AlterPascaler hat geschrieben: Mi 20. Nov 2024, 14:52 @theo
So mache ich das z.Zt., ist aber nicht 24/7 stabil. Nach einigen Tagen geht es nicht mehr.
Hmm, das macht für mich aber nicht so viel Sinn. Was soll da schief gehen?
Bist du dem Problem auf den Grund gegangen?

Mathias
Beiträge: 6693
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: avahi-browse

Beitrag von Mathias »

@Mathias,
Habe ich auch schon drüber nachgedacht. Die includes sind für avahi 42 Dateien. Ein schneller Test mit h2pas und h2paswizard gaben keine gut Ergebnisse. Aber eigentlich brauche ich nur den avahi-client, da sind es nur 3 Dateien.
Also das nochmal anschauen!
Wen du ein C-Beispiel hast, und dieses nicht allzu gross ist, musst du nur die Funktionen übersetzen, welch wirklich gebraucht werden.

Dies würden dann in etwas so aussehen, wie bei meinem ersten SDL3 Versuch,
https://github.com/sechshelme/Lazarus-S ... oject1.pas
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: avahi-browse

Beitrag von AlterPascaler »

theo hat geschrieben: Mi 20. Nov 2024, 12:19 Ich habe wirklich Null Ahnung davon, aber warum benutzt die nicht einfach die auf Linux vorhandenen Tools in z.B. "avahi-utils"?
Geht das nicht?

https://wiki.lazarus.freepascal.org/Exe ... l_Programs
Über Prozess habe ich den Befehl "avaih-browse -ar" aufgerufen. Bei diesem Aufruf bekommt man Änderungen übertragen. Also neue Geräte und verschwundene Geräte. Den Output Stream habe ich regelmäßig gepollt, aber nach ein paar Tagen kam da nichts mehr. Der avahi-daemon lief noch. Programm neustart hat geholfen. Ob der Fehler bei FPC oder avahi liegt konnte ich nicht raus finden.

Um es stabil zu bekommen, habe ich mir einen eigenen avai-service geschrieben. Dieser Service sendet regelmäßig UDP Broadcast an die Klients, diese Antworten da drauf, ich Parse die Pakete, fertig. Ist natürlich im Details alles sehr mühsam, aber stabil. Ein anderer Vorteil ist, das ich keine privilegierte ports brauche, und somit mit user Rechten laufen kann.

Ich habe bei avahi noch eine Rechnung offen, des wegen gebe ich noch nicht auf. DBUS sieht machbar aus. Ich wollte immer mal DBUS ausprobieren.
Viele Grüße
AlterPascaler

Benutzeravatar
AlterPascaler
Beiträge: 72
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: avahi-browse

Beitrag von AlterPascaler »

@Mathias

Hier ein Beispiel https://avahi.org/doxygen/html/client-b ... ample.html

Da stecken so viele #includes in #includes drin, das mich das abschreckt. Ich möchte da schon richtige Typen haben, und wissen was ich da tue.
Gestern habe ich gelesen, das avahi.org bei anderen Sprachen empfiehlt über den DBUS zu gehen. Habe auch xml Beschreibungsdateien gefunden. Mal schauen ob das klappt.
Danke für deine Unterstützung.

Wie weit bist du denn mit deinem SDL3?
Viele Grüße
AlterPascaler

Mathias
Beiträge: 6693
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: avahi-browse

Beitrag von Mathias »

Hier ein Beispiel https://avahi.org/doxygen/html/client-b ... ample.html
Ich habe rasch in das Beispiel reingeguckt.

Die typedefs mit den "*" sind meistens nur Zeiger welche auf einen verborgenen record zeigt.
Innerhalb der clib sind da schon Werte im Record, aber die sind privat. Und du als Benutzer verwendest nur ein Pointer darauf.
Das sieht dann so aus.

Code: Alles auswählen

type
  TGMainLoop = record
  end;
  PGMainLoop = ^TGMainLoop; 
Oder man macht dann einfach.

Code: Alles auswählen

 PGMainLoop = Pointer;
Die enums kann man als const ersetzen, und werden von 0 aufwärts durchnummeriert.
Das sieht dann so aus:

Code: Alles auswählen

  PGUnixPipeEnd = ^TGUnixPipeEnd;
  TGUnixPipeEnd = longint;
const
  G_UNIX_PIPE_END_READ = 0;
  G_UNIX_PIPE_END_WRITE = 1;     
Und Flags sind einfache Longint.

Man kann das benötigte, in eine temporäre C-Datei kopieren und mit h2pas übersetzen.

Will man die kompletten Header übersetzten, dann ist schon ein wenig Know-how und C-Kenntnisse nötig.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten