Was für mich gegen die Unique ID spricht ist, dass die irgendwann überläuft
(was ich entsprechend abfangen muss ^^ na ja...) Aber joah werd ich dann wohl so machen. Immerhin gut zu wissen, dass TCP / IP auch FIFO garantiert.
@Rolf
Im Prinzip kommuniziere ich mit einer Messsoftware an nem anderen Rechner (die nur da vorhandene Hardware ausliest). Und ja ich weiss dass man den Zweck im wesentlichen wahrscheinlich sogar über shared network variables erreichen könnte, nur habe ich nicht die Möglichkeit beide Rechner auf der gleichen LV Version zu halten (der eine ist und bleibt 8.2 der andere soll möglichst aktuell sein, damit man anständig dran programmieren kann; keine Ahnung ob Labview das dann überhaupt kann).
Wie auch immer; heist also:
Ich brauche auf beiden Rechnern jeweils genau eine Schnittstelle die die eigentliche Kommunikation verwaltet (mindestens um sicherzustellen, dass die ID auch einzigartig ist) - zumindest jedenfalls eine pro Port den ich nutze.
Für die Verteilung würde man dann quasi sowas speichern wie: Cluster aus Unique ID (der ausgehenden Nachricht) + wo die Nachricht hinmuss (wenn man die dann weiter verteilt).
Stelle mir vor, da könnte am günstigsten eine Queue für sein. Bei jedem Senden schmeiße ich da einen weiteren Cluster ans Ende. Für Fehlersuche bei Verbindungsabbruch würde man beim Auslesen dann entsprechend die IDs vergleichen, wenn die übereinstimmen senden, wenn nicht die Fehlerbehandlung einleiten.
Wie sieht das eigentlich bei Verbindungsabbruch aus, werden da Teile gesendet oder wird entweder komplett oder garnicht gesendet (eine Send Operation)? Und wie ist das mit dem Timeout? Ich habe schon gesehen, dass das Verhalten bei Timeout konfigurierbar ist, aber schlau geworden bin ich daraus nicht wirklich (aus der LV Hilfe):
Behalte ich dann "schon angekommene" Daten im Buffer oder muss ich die nach dem Timeout aufheben, feststellen wie viele bytes weniger ich lesen muss etc. zur Fehlerbehandlung?
Achja, nochwas: Reicht es wenn ich eine datenintensive Verbindung auf eine separate Verbindung lege um sicherzustellen, dass die Funktionen mit höherer Priorität auch relativ sicher und schnell übertragen werden werden (ich muss quasi einen Videostream übermitteln - habe auf einem Rechner ne Kamera die ich über IMAQdx auslese, brauche das Bild aber auf dem anderen - die zur Verfügung stehende Bandbreite würde ich dann im wesentlichen über einstellbare FPS berücksichtigen (sprich: Je langsamer die Verbindung, desto weiter muss ich die FPS drosseln).
Gruß Kiesch
P.S: Danke schonmal für die bisherigen Infos.