Laden...

Pipe Broadcast: Nachricht von einem Sender an mehrere Empfänger schicken

Erstellt von Thommy vor 7 Jahren Letzter Beitrag vor 6 Jahren 3.869 Views
Thommy Themenstarter:in
36 Beiträge seit 2017
vor 7 Jahren
Pipe Broadcast: Nachricht von einem Sender an mehrere Empfänger schicken

Monimoin,

ich möchte gern einige Daten von einem Programm an mehrere Programme senden (als Broadcast).
Ist das mit einer Pipe möglich? Falls kein Empfangsprogramm nicht auf ist soll es keinen Fehler geben aber wenn ein oder mehrere Empfangsprogramme ein Datenpaket verlieren sollen sie es mitbekommen und anzeigen können.
Es wäre toll wenn mir hier jemand einen Tipp für einen Anfang geben kann.

Thx und BG Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

6.911 Beiträge seit 2009
vor 7 Jahren

Hallo Thommy,

muss es unbedingt auf einer Pipe basieren? Ein UDP-Broadcast wäre sonst eine Alternative (ev. in Verbindung mit WCF).

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

3.003 Beiträge seit 2006
vor 7 Jahren

Ich bin ziemlich sicher, dass broadcasting über (named) pipes nicht geht. Der von gfoidl vorgeschlagene Weg mit Wcf/UDP dürfte ganz gut geeignet sein.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 7 Jahren

Moinmoin,

danke für die schnelle Antworten. Es muss keine Pipe sein und ich schau mir mal ein UDP Broadcast an. Ich bin noch niht so firm mit C# und .Net und da kam mir nur der Einfall eine Pipe zu verwenden 😉

Danke und BG Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 7 Jahren

Ist UDP nicht ein Netzwerk Protokoll? (bin noch ein Anfänger 😐)
Die Programme sollen alle auf einem Rechner laufen, ist es da sinnvoll das via UDP zu erstellen?

VG Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

6.911 Beiträge seit 2009
vor 7 Jahren

Hallo Thommy,

ja UDP ist ein Netzwerkprotokoll -> User Datagram Protocol
So etwas aber bitte selbst googln.

ist es da sinnvoll das via UDP zu erstellen?

es ist eine Möglichkeit und wird vom Framework unterstützt. Somit ist der Aufwand für die Implementierung gering und das ist schon vorteilhaft.
Ich muss allerdings gestehen, dass ich einen rein lokalen UDP-Broadcast noch nicht durchgeführt haben, kann mir aber auch nicht vorstellen dass es dabei Probleme geben sollte. Probiere es einfach einmal aus.

Aber wenn du uns mitteilst welche Daten du lokal als Broadcast senden willst, können wir vllt. andere Wege in Betracht ziehen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

W
872 Beiträge seit 2005
vor 7 Jahren

Udp ist ein verbindungsloses Netzwerk-Protokoll.
Geht natürlich auch lokal - dafür nimmt man am besten die Adresse "127.0.0.1".
Bei UDP muss man nur schnell genug sein, wenn viele Daten kommen. Im Zweifel sollte man das Empfangen und das Verarbeiten der Daten in 2 Threads trennen, da der Netzwerk-Buffer sehr klein ist.
Leider sieht man Probleme im Netzwerkstack nur mit WinDump(tcpdump), da gibt es keine Logs.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 7 Jahren

Danke für eure Hilfe,

ich bin in diesem Bereich echt noch ein kleiner Anfänger 😐
Zu meinen Problem bzw. Programm(e)
1 Programm (Sender)
Dieses Programm ließt Daten via COM Port ein und verarbeite diese grob vor. Es entstehen ca. 16 Pakete a 12 Byte jede Sekunde die weiter gereicht werden sollen (an mehrere Empfangsprogramme)

  1. Programm(e) (Empfänger)
    Soll die Pakete (16 Pakete a 12 Byte je Sekund) empfangen und weiter verarbeiten, speichern, anzeigen oder weiteres. Es sollen mehrere Programme den Datenstrom vom 1. Programm lesen können und die Daten getrennt weiterverarbeiten können. Die Programme sollen auch selbst erkennen wenn ein Paket verloren geht bzw. eine kleine Prüfung (z.B. Checksumme) vornehmen.

Ich hoffe es ist halbwegs verständlich und ich bin für jede Idee offen 😉

Danke und VG Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

F
10.010 Beiträge seit 2004
vor 7 Jahren

Und warum sollen das verschiedene Programme sein?

A
764 Beiträge seit 2007
vor 7 Jahren

Hallo Thommy

Wenn ich das richtig verstanden habe, hast du auch Kontrolle über die anderen Programme. Dann könntest du dir auch mal Zyan Communication Framework von Rainbird anschauen. Da brauchst du dich dann nicht mehr um den ganzen Broadcast-Kram selber kümmern.

Gruß, Alf

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 7 Jahren

Moinmoin,

@FZelle: Es sollen einfach verschiedene Programme sein da nicht immer alle gebraucht werden und man manuell nur die startet welche auch benutzt werden, es geht bestimmt auch anders aber das war meine erste Idee 😉

@ALF: danke für denn Tipp, ich schau mir das Framework gerne mal genauer an. Weißt du (oder jemand anders hier im Forum) ob das Framework auch unter Cross Plattform via Mono funktioniert. Ich habe bis jetzt immer versucht nur native .Net Funktionen zu verwenden, da das Zielsystem ein Raspberry Pi Zero ist. COM Schnittstelle und auch Pips mit nur einem Empfänger haben bis jetzt auch gut funktioniert 😉

Danke für eure Tipps, BG Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

1.029 Beiträge seit 2010
vor 7 Jahren

Hi,

wie auf der Projektseite erwähnt läuft Zyan auch unter Mono - setzte es selbst auf nem RaspberryPi 2 ein.

LG

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 7 Jahren

Das Klingt doch toll 😉

Ich werde es heute mal ausprobieren.
Danke für alle Infos und Tipps 👍

VG Thommy 😉

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Hallo nochmal,

ich versuch gerade mein Projekt auf .Net CORE (Visual Studio 2017 auf Windows und OSX) zu portieren. Leider wird Zyan nur von .Net Framework unterstützt.

Fehlermeldung:
Install-Package : Das Paket Zyan 2.8.0 ist nicht mit netcoreapp1.1 (.NETCoreApp,Ver
sion=v1.1) kompatibel. Paket Zyan 2.8.0 unterstützt Folgendes:

  • monoandroid10 (MonoAndroid,Version=v1.0)
  • net35 (.NETFramework,Version=v3.5)
  • net40 (.NETFramework,Version=v4.0)
  • net45 (.NETFramework,Version=v4.5)
  • net46 (.NETFramework,Version=v4.6

gibt es eine Möglichkeit das Paket auch unter .Net core zu nutzen?

Thx and cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.

16.842 Beiträge seit 2008
vor 6 Jahren

Die GitHub Seite mit dessen Machern wäre die bessere Adresse das Nachzufragen als hier
https://github.com/zyanfx/Zyan

.NET Remoting wird aber mit .NET Core eher nicht funktionieren....

Thommy Themenstarter:in
36 Beiträge seit 2017
vor 6 Jahren

Okay ich versuch es mal auf der GitHub Seite 😉

thx and cya Thommy

Es gibt 10 Arten von Menschen. Die die Binärcode verstehen und die die ihn nicht verstehen.