LabVIEWForum.de - TCP lesen mit unregelmässigen anzahl bytes

LabVIEWForum.de

Normale Version: TCP lesen mit unregelmässigen anzahl bytes
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo zusammen
ich befasse mich seit kurzem mit den Funktionen von TCP. Bei einem Test kommuniziere ich mit dem Prüfling über LAN auf dem eine Server Software läuft, die meine Befehle und Parameter über LAN entgegennimmt, ausführt und Resultate zurückliefert. Das lesen und schreiben über TCP ist kein Problem. Jedoch weiss ich nie wieviel bytes ich empfangen werde. Die Server Software ist nicht von mir geschrieben worden d.h. ich kann die Pakete die gesendet werden nicht beeinflussen. Weiss jemand eine Lösung, wie ich die ganzen strings empfangen kann egal ob sie 10bytes oder 60bytes gross sind?

Gruss kubes
Hallo kubes,

wenn du nicht weiss, wie gross die Strings sind, kannst du alles was über TCP ankommt in einer Whileschleife auslesen, puffern und dann parsen. Gib einfach die maximale Grösse beim TCP-Read und schliesse einen Error-Cluster an den Ausgang damit die Fehlermeldung "Timeout" nicht kommt.

Also einfach alles auslesen und puffern (z.B. mit Concancenate Strings).
Oder wie ich mit einer Queue puffern.

Gruss, Eugen

Guest

Danke für die schnelle Antwort. Werde das mal ausprobieren.

Gruss kubes
Hallo,

"Shared Variables" sind eine sehr interessante Alternative zu TCP. Da ist das TCP integriert und Du schreibst nur noch z.B. in eine String-Variable und liest sie auf einem anderen Rechner aus. Das erleichtert das ganze ungemein.

Gruß Markus

' schrieb:Hallo zusammen
ich befasse mich seit kurzem mit den Funktionen von TCP. Bei einem Test kommuniziere ich mit dem Prüfling über LAN auf dem eine Server Software läuft, die meine Befehle und Parameter über LAN entgegennimmt, ausführt und Resultate zurückliefert. Das lesen und schreiben über TCP ist kein Problem. Jedoch weiss ich nie wieviel bytes ich empfangen werde. Die Server Software ist nicht von mir geschrieben worden d.h. ich kann die Pakete die gesendet werden nicht beeinflussen. Weiss jemand eine Lösung, wie ich die ganzen strings empfangen kann egal ob sie 10bytes oder 60bytes gross sind?
Gruss kubes
im Example finder gibts ein Beispiel zu dem Thema:

[attachment=5379]
' schrieb:Hallo,

"Shared Variables" sind eine sehr interessante Alternative zu TCP. Da ist das TCP integriert und Du schreibst nur noch z.B. in eine String-Variable und liest sie auf einem anderen Rechner aus. Das erleichtert das ganze ungemein.

Gruß Markus


Ich denke Shared haben damit gar nichts zu tun, oder verstehe ich was falsch.

Gruss, Eugen
Ich habe einen Client und einen Server, die beide über Shared Variables kommunizieren.
Ich schreibe einen Befehl in eine Shared Variable und der wird dann vom Server verarbeitet, d.h. z.B. wird da ein Messwert,... erfasst.
Die ganzen erfassten Daten kommen dann in eine andere Shared Variable und werden über diese zurück an den Client gesendet.
Vielleicht habe auch ich was falsch verstanden. Unsure
Für mich hat es sich so angehört, als ob er was in der Art so wie ich machen wollte. Unsure

Gruß Markus

' schrieb:Ich denke Shared haben damit gar nichts zu tun, oder verstehe ich was falsch.

Gruss, Eugen
Das geht hier leider nicht, er hat ja keinen Einfluss auf die Serversoftware.
Wie eg schon sagte bleibt wohl nichts anderes als Daten Lesen, in einem Puffer schreiben und Parsen an Hand von Trennzeichen oder so.

VDB
Muss die Gegenstelle in dem Fall nicht auch LabVIEW sein, damit das Server und Client-VI miteinander kommunizieren können?
Oder wie schickt ihm die Software sonst Werte zurück?

Gruß Markus

' schrieb:Das geht hier leider nicht, er hat ja keinen Einfluss auf die Serversoftware.
Wie eg schon sagte bleibt wohl nichts anderes als Daten Lesen, in einem Puffer schreiben und Parsen an Hand von Trennzeichen oder so.

VDB
' schrieb:Muss die Gegenstelle in dem Fall nicht auch LabVIEW sein, damit das Server und Client-VI miteinander kommunizieren können?
Oder wie schickt ihm die Software sonst Werte zurück?

Gruß Markus

Nee, der Server ist der Prüfling, dessen Software muss nicht in LV geschrieben sein.
Das VI hier ist der Client der über TCP-IP mit dem Server kommuniziert.
Das benutzte Protokoll ist nicht von der Programmiersprache abhängig.

VDB
Seiten: 1 2
Referenz-URLs