ubuntuusers.de

Problem mit Netzwerkprogrammierung (C, UDP, DLNA)

Status: Gelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6503

Wohnort: Hamburg

Ich weiß auch nicht, was da so an Events verteilt wird, die bspw. das einpflegen neuer Dateien, etc.

Das muss ich noch herausfinden. Meine SBTouch verteilt alle paar Sekunden einige Bytes an die Ports 3483 und 17784 und mein Sony TV scheinbar nur an Port 7776. Auf meinem Spickzettel hatte ich mir dazu RFC768 notiert aber noch nicht angesehen.

Das mit den Threads ist mir klar. Bei zwei früheren Programmen hatte ich das auch schon mal gemacht. Da müsste ich mich erst wieder rein lesen. Aber zuerst muss ich mir überlegen, was die zurückgeben sollen (rohe Daten oder vor verdaut).

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6503

Wohnort: Hamburg

Ich hatte vorhin einige handfeste Informationen zum Thema SSDP gefunden. Da findet man dann in den Links auch eine komplette Beschreibung.

Wenn ich darin lese, frage ich mich allerdings wieso das simple heißt. Da möchte ich nicht wissen, wie da komplex aussehen würde.

Aber ich würde das schon als Erfolg ansehen, wenn ich nur eine Liste abspielbarer Dateien abgreifen könnte und diese dann an ein Programm wie z.B. mpv weiterreichen könnte. Das erscheint mir mit vertretbarem Aufwand gerade noch machbar. Fernsteuerung anderer Geräte ist nicht mein Ziel!

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Simple, weils ne feste IP gibt, es ein simpler Datenaustausch (udp) ist, nehme ich an. Komplex wäre ein Server/Client-Konzept mit nmap-ähnlichem Netzwerk durchsuchen, freie IP:Port-Wahl und TCP.

Ich hab sowas zwar noch nicht gemacht, aber kenne durch die Benutzung ein paar Fallstricke. Die Pfade ändern sich, wenn das Gegenüber die Datenstruktur ändert. Intern wird da wohl eine Datenbankzeile, ein file descriptor, eine inode oder sowas verwendet. Playlisten verschieben sich dadurch. VLC zeigt da bspw. den Pfad http://192.168.2.50:8200/MediaItems/50675.mp3 an. Insofern lohnt sich das Abspeichern von Playlisten nicht, es sei denn du bekommst da „absolute relative“ Pfade zurück.
Der Vorteil eines solchen Medienservers ist, das das auch mit restriktiven OS wie iOS funktioniert. Ich würde immer NFS vorziehen, wenn möglich, je nach Endgerät. Aber vielleicht findest du ja raus, woran das liegt und kannst nen Workaround basteln 😉

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6503

Wohnort: Hamburg

Intern wird da wohl eine Datenbankzeile, ein file descriptor, eine inode oder sowas verwendet. Playlisten verschieben sich dadurch.

Wenn da eine Datenbank dahinter steckt, müsste das meiner Meinung nach nicht sein. Bei meinem Onap Server ist die ID 17-stellig, wobei ich den Verdacht habe, das die nochmal aufgeteilt ist (da tauchen immer wieder $-Zeichen auf). Ob die IDs sich bei einer neuen Indexierung ändert, habe ich noch nicht überprüft. Auf dass, was der Server intern macht, haben wir eh keinen Einfluss.

Aber vielleicht findest du ja raus, woran das liegt und kannst nen Workaround basteln

Du überschätzt mich. Jetzt wo ich langsam eine Vorstellung davon bekomme, was da alles abläuft, würde ich sagen dass ist einige Nummern zu groß (oder ca. ein Jahr Arbeit).

Am Ende wird eine TCP Verbindung aufgebaut und Kommandos ausgetauscht. Da tauchen dann auch noch Dinge wie SOAP (Simple Object Access Protocol) auf, wie ich gerade gelesen habe. Am Schluss wird dann eine XML Datei übertragen, in der die Daten der Dateien des gewünschten Verzeichnisses enthalten sind. Kannst du dir mit GUPnP AV ansehen (DIDL-Lite holen), nur dass die XML in einem Stück kommt, soweit ich das bisher gesehen habe.

Antworten |