LabVIEWForum.de
TCP-Verbindung kann nicht beendet werden - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: TCP-Verbindung kann nicht beendet werden (/Thread-TCP-Verbindung-kann-nicht-beendet-werden)



TCP-Verbindung kann nicht beendet werden - nixblicker - 18.11.2009 18:41

Hallo,

ich habe eine TCP-Verbindung zu einem anderen Rechner (Server) hinbekommen.
Es können Daten zwischen meinem Rechner und diesem Server ausgetauscht werden.
Soweit funktioniert alles. Nur wenn ich die Datenübertragung mit dem "Stop"-Button oder
dem "Übertragung beenden"-Button beenden will, stürzt das Programm ab und ich muss
es mit dem Task-Manager beenden.
Kann mir jemand helfen ?


LV8.5

Danke im voraus.
Gruß
Günter


TCP-Verbindung kann nicht beendet werden - cb - 18.11.2009 21:20

' schrieb:Nur wenn ich die Datenübertragung mit dem "Stop"-Button oder
dem "Übertragung beenden"-Button beenden will, stürzt das Programm ab und ich muss
es mit dem Task-Manager beenden.
Kann mir jemand helfen ?

kann es sein dass du bei dem Parameter "Timeout" bei der Primitive "TCP Read" ein -1 angegeben hast (wait forever ...)? wenn ja solltest du das ändern und den Fehler 56 abfangen - das ist in diesem Fall kein Fehler sondern bedeutet nur dass innerhalb des Timeouts keine Daten empfangen wurden ...


TCP-Verbindung kann nicht beendet werden - nixblicker - 19.11.2009 10:39

Hallo,

ich habe 100ms am Parameter Timeout eingestellt.
Wie kann ich den "Fehler 56" abfangen ?

Ich verstehe auch nicht warum das Programm nicht in
die Event-Schleife "Übertragung beenden" hineinläuft.

Vielen Dank und Grüße,

Günter


TCP-Verbindung kann nicht beendet werden - IchSelbst - 19.11.2009 11:01

' schrieb:ich habe 100ms am Parameter Timeout eingestellt.
Wie kann ich den "Fehler 56" abfangen ?
Dort, wo du 100ms eingestellt hast, wird dieser Fehler bereits abgefangen. Guckst du das Element nach TCP/IP-Rd und der Enumerator mit der Nummer 56.

Zitat:Ich verstehe auch nicht warum das Programm nicht in die Event-Schleife "Übertragung beenden" hineinläuft.
Ganz einfach: Weil die While-Schleife, in der die TCP/IP-DÜ gemacht wird, mit der Event-Struktur sequenziert ist. Hängt alles mit dem Datenflußprinzip zusammen, auf dem LV aufgebaut ist. Du müsstest also zuerst auf Stopp, dann Beenden drücken.

Außerdem solltest du folgende Änderungen machen:

Im Case Timeout gehört die TCP/IP-Referenz durchverbunden. Die Einstellung "Standard, wenn nicht verwendet" kann hier zu Problemen führen.

Im Case "Übertragung beenden" gehört ein FALSE rein, kein TRUE. Nach dem Beenden gibt es die TCP/IP-Referenz nicht mehr, daher können auch keine Daten übertragen werden.

Das Löschen des Bedienelementes "Eingabe" sollte nicht per Lokaler Variablen gemacht werden, sondern mit einem Property, das mit der nachfolgenden While-Schleife sequenziert werden muss.

Der Button STOP muss vor der While-Schleife per sequenziertem Property gelöscht werden.


Und noch eins zu deiner eigentlichen Frage:
Warum das Programm beim Beenden hängt, kann ich nicht genau sagen. Bei mir geht nämlich gar nichts, weil alle Elemente Fehler 1 (ArgumentError) bringen. Ich habe mit 127.1.1.0 Port 0 ausprobiert.


TCP-Verbindung kann nicht beendet werden - SeBa - 19.11.2009 11:05

' schrieb:... Ich habe mit 127.1.1.0 Port 0 ausprobiert.


Ist es nicht eigentlich die 127.0.0.1 ? aka localhost

Gruß SeBa


TCP-Verbindung kann nicht beendet werden - IchSelbst - 19.11.2009 11:28

' schrieb:Ist es nicht eigentlich die 127.0.0.1 ? aka localhost
001, nicht 110? Soll mir Recht sein. Cool

"Localhost" ging aber auch nicht. Zumindest nicht mit Port 0. Der im LV-Beispiel angegebene Port 6123 zusammen mit localhost hat auch nicht funktioniert. Da gingt nämlich gar nichts. Da war wahrscheinlich trotz Timeouts der TCP/IP-Treiber gehangen. Dann hab ich aber keine Lust mehr gehabt - weil: Die vielen kleinen Ungereimtheiten im Programm zu verbessern ist auch irgendwann mal nervig. Tongue


TCP-Verbindung kann nicht beendet werden - nixblicker - 19.11.2009 16:28

Hallo,

danke für die vielen Tipps.

Ich muss jetzt erst einmal die Fehler und
Ungereimtheiten korrigieren und ich werde
mich dann melden wenn das Programm
funktioniert.

Gruß
Günter


TCP-Verbindung kann nicht beendet werden - nixblicker - 02.12.2009 15:17

Hallo,

jetzt funktioniert mein Programm.
Ich habe den "Übertragung beenden"-Button weggelassen und
benutze nur noch den Stop-Button.
Um die TCP/IP-Verbindung zu überprüfen muss ich ja dauernd
etwas senden und empfangen. Da der Server ein Linux-System
ist auf das ich keinen Zugriff habe, muss ich genau festgelegte
Strings senden und empfangen.

Danke nochmals für eure Hilfe.

Gruß Günter