Konzeptfrage zu UDP Kommunikation Multiclient
Hallo zusammen.
Aktuell überlege ich mir Möglichkeiten, um eine stabile UDP Kommunikation zwischen verschiedenen Teilnehmern zu realisieren. Nun bin ich mir aber aufgrund von mangelnder Erfahrung nicht sicher, wie ich an diese Sache herangehen soll. Nachfolgend versuche ich nun zu beschreiben, wie ich mir den Ablauf vorstelle und erhoffe mir ein Feedback von eurer Seite, ob meine Gedanken "effizient" sind bzw. wo und was man anders/besser machen könnte. Vorab sei noch gesagt, dass ich mittlerweile viel über UDP gelernt habe und mir bewusst ist, dass es sich um ein fehleranfälliges Protokoll handelt und es keine Kontrollstrukturen gibt, sofern man sich selbst keine schafft.
Situationsbeschreibung:
Es wird vom Rechner aus mit bis zu sechs Teilnehmern kommuniziert. Die Anzahl ist stets variabel. Zunächst erfolgt ein Broadcast, auf den alle angeschlossenen Teilnehmer einmalig reagieren und somit ihre Anwesenheit kundtun. Dies ist sowas wie ein Initialisierungsvorgang. Nachdem sich die Teilnehmer gemeldet haben, wird über ein Kommando von allen Teilnehmern eine Liste mit Daten abgeholt. Der Inhalt spielt für die weitere Betrachtung keine Rolle. Es ist nur wichtig, dass diese speziellen Daten angefordert wurden. Anschließend dürfen den Teilnehmern, voneinander unabhängig, Kommandos mit Vorgaben geschickt werden. Die Antworten müssen dann dem jeweiligen Teilnehmer zugeordnet werden können um damit z.B. Anzeigen zu füttern.
Nun kann es passieren, dass ein Teilnehmer abgeklemmt wird und ein neuer hinzukommt. Für diesen Fall soll ein Refresh Button vorgesehen werden. Dieser scant nach neuen Teilnehmern. Hier ergibt sich die erste Hürde. Es muss zum einen der Timeout des "alten" Teilnehmers erfasst, sowie sämtliche Daten zu diesem aus Arrays/Datenspeichern gelöscht werden. Ausserdem muss dann der neue Teilnehmer in die bestehende "Liste" eingefügt werden.
Problematik:
Über UDP Read bekomme ich stets die IP Adresse des sendenden Teilnehmers und für die Auswertung der jeweiligen Nachricht habe ich bereits ein VI, dass die Daten entsprechend aufbereitet und in lesbare Strukturen umsetzt. Wie aber speichere ich nun die Daten effizient, sodass ich auf diese Teilnehmerbezogen zugreifen kann? Hier gingen meine Gedanken in Richtung FGV. Allerdings ist mir nicht klar, wie ich diese dann aufbauen muss. Bisher hatte ich stets Indizies, die ich angeben konnte, aber in diesem Fall habe ich als Auswahlkriterium lediglich die IP Adresse des Teilnehmers und darüber hinaus die Art der Nachricht, die dieser geschickt hat (z.B. die Antwort auf eine Wertevorgabe oder Anfrage von Teilnehmerparametern).
Demnach müsste ich mir zunächst sowas wie einen IP Manager basteln, über den ich mir dann Indizies aus einer Tabelle mit IP Adressen ziehe?! Sicher merkt man, dass mir hier der rote Faden verloren geht...
Kurzum und pauschal ausgedrückt: Ich weiß einfach nicht, wie ich die unterschiedlichen Teilnehmer managen soll, ohne Daten durcheinander zu werfen.
Wie gehen Profis mit solchen Dingen um?
Wie würde man unterschiedliche Daten von unterschiedlichen Teilnehmern speichern und verarbeiten?
Ich freue mich auf euer Feedback. Falls in meinen Schilderungen etwas undeutlich ist, werde ich mich auf entsprechendem Hinweis bemühen, diese genauer auszuführen!
NoWay
|