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!
Hallo LVG
Ich hab versucht ein Server Client System aufzubauen. Dabei sollte die Bedingung gelten das beide Seiten jederzeit unterbrechbar sein sollten. Gleichzeitig darf bei einer Unterbrechung von einem der beiden Kommunikationspartnern der ander nicht auch ausfallen. D.h. er soll dann versuchen die Verbindung wieder herzustellen, solang bis sie wieder hergestellt ist.
Mein Problem beim Server ist das wenn der client nichts schreibt die Lesefunktion des Server den Fehler 56 rausgibt (Zeitüberschreitungsfehler) was ja auch korrekt ist. Das Problem ist jedoch das wenn der Client geschlossen wird, sprich die Verbindung von Seiten des Clients geschlossen wird, die Funktionen senden oder lesen in den meisten Fällen (ca. 7 von 10 variiert aber) die Fehlermeldungen 62 & 66 rausgeben. (62=Das System hat die Netzwerkverbindung abgebrochen ; 66=Der Übertragungspartner hat die Netzwerkverbindung beendet.)
Soweit so gut denn dann ist der Fall klar, aber ab und zu bekomm ich anstatt der 62 oder 66 den Fehler 56 obwohl der Client schon offline ist. Und da ist mein Problem. Wie kann ich in diesem Fall feststellen ob der Client wirklich die Verbindung abgebrochen hat oder einfach nichts gesendet hat. Den diese Angabe möchte ich gerne im Frontpanal des Servers angeben.
Hat da jemand eine Idee?
Anzeige
30.11.2007, 10:14 (Dieser Beitrag wurde zuletzt bearbeitet: 30.11.2007 10:18 von eg.)
Du kannst probieren selbst zu erkennen ob der Client noch da ist oder nicht. Einfach jede halbe Sekunde (also Zeit < Timeout beim Read) irgendwas schicken, somit solltest du keinen Fehler 56 mehr haben.
Andere Möglichkeit wäre den Timeout so groß (am besten unendlich) zu machen, daß es nie auftritt.
Nein das funktioniert auch nicht. Den komischerweise kann ich noch senden obwohl der Client die Verbindung geschlossen hat. Ich habs einfach so probiert das wenn beim Lesen der Fehler 56 (Zeitüberschreitung) aufgetaucht ich einfach etwas geschreiben habe. Doch wie gesagt am Fehlerausgang der Lesefkt. erhalte ich ein "OK". Wenn ich mein VI im Debuggingmodus laufen lasse (was ich jetzt mittlerweile einige Male gemacht hab) kam jedesmal der richtige Fehler beim Leseversuch wenn es keine Verbindung mehr gibt.
Weiß jemand wie man eine LabVIEW Funktionen aufmachen kann und ins Blockdiagramm reinschauen kann??? Geht das überhaupt? Vielleicht würde ich so mehr Informationen erhalten.
Server: "Hallo Client bist du noch da ?"
Client: "Ja bin ich, bist du noch da ?"
Server "Ja bin ich, Client bist du noch da ?"
Client: ...*stille*
Server: "pfff..." ... Verbindung wird neu hergestellt....
Client: "bin da, bist du noch da?"
Server: "Ja bin ich, bist du noch da"
...usw...
du musst also ne anfrage senden ob der client/server noch da ist .. und der jeweilige gegenpart muss antworten .. tut er das nicht in einer gewissen zeit weist du das mit der verbindung was nicht stimmt ..(oder dem Programm ...)
Genauso habe ich das jetzt nu gemacht.
Am Anfang bin ich halt gar nicht auf diese Idee gekommen weil mein Server ja "eher selten" Daten vom Client empfängt, d.h. alle ein paar Sekunden. Das heisst aber wiederrum das die Funktion Lesen meistens den Fehler 56 rausgibt, was ja zur Folge hat das jedesmal wenn dieser Fehler auftritt erstmal die Abfrage gemacht werden muss.
Nun ja aber nu klappts und die Wahrscheinlichkeit das ich irgendwann mal ein VI schreibe ohne das Forum um Hilfe zu bitten steigt ;-)