Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
Hallo,
ich habe mir die Beispiele zur (einfachen) Kommunikation Client/Server via TCP/IP angeschaut und ausprobiert.
Kann ich diese entsprechend abwandeln, um folgendes Szenario zu erzielen:
n - Rechner kommunizieren in einer Kette, d.h. alle bis auf den letzten Rechner senden und erhalten Daten von ihrem Nachfolger SOWIE alle bis auf den ersten Rechner senden und erhalten Daten von ihren Vorgänger.
Bzw. was müsste ich als Vorleistung schaffen, damit ich in meiner jeweiligen Hauptschleife meiner VIs solche Nutzung hätte:
* lies aktuellen Datensatz von Nachfolger bzw Vorgänger
* schreibe aktuellen Datensatz (an Vorgänger bzw. Nachfolger).
Wenn ich die oben genannten Beispiele abwandle, müsste jeder Rechner 2x Server sein (jeweils verschiedene Ports) und 2xClient, bis auf den Anfangs und Endrechner? Spricht etwas gegen diese Umsetzung? Oder geht es besser, leichter?
Wie löse ich die anfängliche Verbindungsaufbauphase? In den Beispielen wurde immer davon ausgegangen, dass der Server als erstes gestartet wird, wie kann ich den Client so festhalten, dass er entsprechend wiederholt versucht, eine Verbindung aufzubauen?
Danke für Hinweise,
Mat.
20.08.2008, 19:27 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2008 19:31 von A.Berndsen.)
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
' schrieb:Spricht etwas gegen diese Umsetzung? Oder geht es besser, leichter?
Es geht leichter.
Mit "shared Variables" geht das sicher deutlich einfacher. Aber das soll Dir z.B. Markus oder Eugen genauer erklären, die sind da fitt.
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
' schrieb:Es geht leichter.
Mit "shared Variables" geht das sicher deutlich einfacher. Aber das soll Dir z.B. Markus oder Eugen genauer erklären, die sind da fitt.
Grüße
Andreas
Ich bin bei SVs gar nicht fitt. Gerade umgekehrt, ich empfele immer TCP/IP und Markus SVs.
Aber zuerst folgende Frage:
Warum muss es eine Kette sein? Man kann doch einen Server machen und jeder PC kann dann mit jedem anderen PC über diesen Server kommunizieren.
Wenn du Interesse dran hast, kann ich dir ein fertiges Template anbieten.
Ansonsten klar, es geht. Gibt es Schierigkeiten dabei?
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
Zitat:Spricht etwas gegen diese Umsetzung?
jaein...
Zitat:Warum muss es eine Kette sein? Man kann doch einen Server machen und jeder PC kann dann mit jedem anderen PC über diesen Server kommunizieren.
Richtig, dies würde die Ausfallsicherheit erhöhen, auch wenn die Gefahr besteht das der Server ausfallen könnte. Da so i.d.r. nur die Kommunikation eines Client ausfällt (evtl. Netzwerktechnisch) und nicht die ganze Kette unterbrochen wird...
Ich würde auf Server / Client setzten.
Gruß Dennis
Wissen ist das einzige Gut das sich vermehrt, wenn man es teilt!
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
Du kannst auf einem Rechner die Shared Variables Engine in Deine Applikation mit einbinden und dort auch programmatisch deployen. Dann musst Du nur noch in Deinem *.alias-File die IP-Adresse des Rechners angeben, auf dem die SVE läuft. Wie das alles geht siehst Du hier.
Alle anderen Rechner können dann über die Shared Variables kommunizieren. Um die Rechner zu unterscheiden kannst Du ja einen kleinen Kenner/Header verwenden, den Du vor der Weiterverarbeitung wieder entfernst.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
Es sollte von daher eine Kette sein, da ich so jeweils ein einzelnes Gerät simulieren möchte.
Es findet entlang dieser Kette eine Abarbeitungsreihenfolge statt. Also Gerät 1 tut was und übergibt an Gerät 2 usw.
(Die Reihenfolge wird dadurch bestimmt, dass jedes Gerät seinen Vorgänger bzw Nachfolger kennt.)
Bei ersten Tests habe ich folgendes Problem, wenn ich die VIs starte, dann timen die "Clienten" aus, da eventuell der entsprechende Server noch nicht gefunden wurde.
Folgender (Laufzeit?) Fehler kommt (s.A.)
Wie kann ich da z.B. erreichen, dass er in einer Schleife wartet, bis er eine Verbindung zum Server aufbaut, bzw immer wieder in so einer Schleife wartet, auch wenn die Verbindung mal verloren geht?
Ansonsten schaue ich mir das auch mal mit den Shared Variables an...
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Kommunikation zwischen verschiedenen Rechnern (z.B. TCP/IP) als Kette
Du kannst, wenn Du es so wie ich machst, die SV pollen. Durch den Header weißt Du genau, welcher Rechner was gesendet hat. Du kannst ja die SV in eine State-Machine einbauen, d.h. Du pollst eine SV und wenn die Nachricht für den entsprechenden Rechner ist, dann arbeitest Du Deine unterschiedlichen Cases ab.
Mehr sage ich dazu nicht, da Du Dich wohl eh für TCP/IP entscheidest.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------