ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
622
622
EMPFEHLEN
-
Hallo,
ich möchte die Daten eines Netzwerkgeräts mittels TCP abfragen. Soweit funktioniert es prinzipiell ja, das Problem ist nur dass die Daten nur teilweise eingelesen werden.
Mein Code: (Verbindung ist erfolgreich aufgebaut.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Dim i As Integer ' Buffer for reading data Dim bytes(1) As Byte Dim data_hex As String data_hex = "" ' Loop to receive all the data sent by the client. i = stream.Read(bytes, 0, bytes.Length) While (i <> 0) For x As Integer = 0 To bytes.Length - 1 data_hex &= bytes(x).ToString("X2").ToUpper & " " Next If Not stream.DataAvailable Then Exit While End If i = stream.Read(bytes, 0, bytes.Length) End While Return data_hex
stream ist hier = Client.GetStream
Es werden hier direkt die eingelesenen Bytes in einen Hex-Code umgewandelt (Das ist für die Darstellung der Daten Notwendig).
Das Problem ist nun, wenn ich die Funktion aufrufe, dass eigentlich folgende Ausgabe erscheinen sollte:
Code :1
53 47 00 10 06 49 48 0e 01 0c 01 15
Allerdings kommt es nur zur folgender Ausgabe:
Code :1
53 47 00 10
Den TCP-Verkehr habe ich mittels "wireShark" geprüft und es wird der gesamte (erwünschte) Stream übertragen, allerdings wird eben nur ein Teil eingelesen.
Wenn ich im DEBUG-Modus teste und den Code wirklich Schritt für Schritt durchgehe, dann wird der gesamte Stream eingelesen.
Wenn ich zum Beispiel "byte(50)" deklariere, dann wird auch alles eingelesen, aber dann sind halt 48 mal "00" in der Ausgabe enthalten.
Wo liegt denn hier mein Fehler?
Mfg,
Domsi
-
Wahrscheinlich liefert "stream.DataAvailable" false, weil jetzt im Augenblick noch keine weiteren Daten vorhanden sind, aber vielleicht 50 Millisekunden später. Ist aber nur so geraten.
Geändert von Shakie (03.02.11 um 01:43 Uhr)
hihi = -h²
-
Ahhh ok das macht Sinn was du sagst

Wenn ich nämlich auf Not stream.DataAvailable prüfe und dann z.b. 50ms sleep einstelle, dann läuft die schleife solange bis die Daten da sind.
So bekomme ich jetzt mal alle Daten.
Danke!
Mfg,
Domsi
Ähnliche Themen
-
SequenceInputStream liest nur einen Stream
Von AvS im Forum JavaAntworten: 4Letzter Beitrag: 19.04.09, 12:21 -
Nur einen Teil des Names lesen
Von Power-Poler im Forum Delphi, Kylix, PascalAntworten: 10Letzter Beitrag: 16.03.08, 13:44 -
Nur einen Teil der HP neu laden lassen
Von calippo im Forum HTML & XHTMLAntworten: 7Letzter Beitrag: 14.07.06, 19:52 -
Reload einen Teil
Von dragon90 im Forum Javascript & AjaxAntworten: 22Letzter Beitrag: 27.06.06, 14:30 -
CSS nur für einen Teil anwenden
Von inspire im Forum CSSAntworten: 3Letzter Beitrag: 24.10.03, 13:43





Zitieren
Login





