LabVIEWForum.de - DataSocket Connection

LabVIEWForum.de

Normale Version: DataSocket Connection
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich versuche momentan ein Multi-client TCP Server in LabVIEW zu entwickeln. Ich habe meinen Server nach diesem Schema aufgebaut (https://labviewcoder.com/2017/07/10/an-a...n-labview/ ).

Also es wird ein Reference VI (TCP Handler) asynchron aufgerufen, der die Arbeit verrichtet und der aktiv ist solange die TCP Verbindung vorhanden ist. Im TCP Handler wird ein SubVI (Open DataSocket) aufgerufen, der eine DataSocket für einen bestimmten URL aufmacht und die Reference-ID in einem Array speichert.

Ziel ist: die Datasocket Open soll nur einmal für jeden URL durchgeführt, wenn mehrere Client sich an TCP Server verbinden.

Es funktioniert einwandfrei. Aber wenn ich den Client, der die DataSocket geöffnet hat, schließe, schließt LabVIEW automatisch die DataSocket Sad. Also der Refernce VI (TCP Handler) schließt die DataSocket und es kommt dann ein Fehler bei den anderen Clients, die die gleiche Reference-ID verwenden. Ich will aber dass die DataSocket ofen bleibt, solange der Server läuft.

Hat jemand eine Idee, wie ich der automatischen "Close" der DataSocket vom TCP Handler verhindern kann ?.

Danke im Voraus für eure Unterstützung

Muaadh
Das ist Standard in LabVIEW, sobald eine VI komplett geschlossen wird, werden alle Refnums geschlossen/beendet, die du in diesem VI geöffnet hast.

Sobald also dein Handler-VI beendet wird und zwecks dynamischen Start auch nicht mehr im Speicher, sind die Datasocket-Refnums ungültig.

Gruß, Jens

EDIT: Rolf hat das kürzlich noch besser erklärt:
https://www.labviewforum.de/Thread-TCP-m...#pid194542
Hi Jens,

vielen Dank für deine Antwort.
Ich hab gerade die Erklärung von Rolf gelesen. Also es gibt leider keine Möglichkeit die Datasocket-Refnums "alive" zu halten.

Gruß,
Muaadh
(26.11.2019 19:41 )Muaadh schrieb: [ -> ]Ich hab gerade die Erklärung von Rolf gelesen. Also es gibt leider keine Möglichkeit die Datasocket-Refnums "alive" zu halten.
Nein, solange du die Refnums innerhalb eines SubVIs eines dynamisch gestarteten VIs erstellst.

Gruß, Jens
alles klar.
Danke Jens
Referenz-URLs