[VB] Informationen eines TCP Packets verwenden

06/10/2014 22:26 ravvon#1
Guten Abend,
ich glaube mein Titel ist etwas unglücklich gewählt und vielleicht wurde das auch schon irgendwie beantwortet aber ich habe bisher nichts dazu gefunden, zumindest nicht in der Form.

Ich würde gerne wissen wie man den Inhalt eines TCP Packetes richtig in seinem Programm verarbeitet.

Wenn ich jetzt immer ein festes Packet habe kann ich natürlich die Plätze der Informationen direkt ansprechen, also beispielsweise wie:
Code:
lvl = BitConverter.ToInt16(bytes[1], bytes[2])
Aber wie mache ich es wenn ich ein Packet habe wo ich am Anfang einen Inhalt habe der nicht immer gesendet wird sondern beispielsweise nur für den 1. Login des Tages mitgesendet wird.
Ich habe das Problem bisher so gelöst das ich das Byte-Array mit einer For-Schleife ablaufe bis ich zu einem festen Inhalt komme, als Beispieler der Loginname und ab da sind wieder alle Informationen fest verteilt.
Also um dann beispielsweise die Information über das Level des Spielers anzusprechen nehme ich jetzt den Index des Loginnamen und addiere einfach noch den Unterschied bis zur Position an der die Information des Levels steht.
Beispiel:
Code:
i As Integer
For i = 0 To bytes.Length Step 1
If bytes[i] = "24" And bytes[i + 1] = "25" Then
	Exit For
End If
Next
lvl = BitConverter.ToInt16(bytes[i + 25], bytes[i + 26])
Erscheint mir aber als eine sehr ungepflegte Lösung, vielleicht kommt es mir auch nur so vor da ich noch ein Anfänger bin, aber ich würde gerne mal eure Meinung dazu hören und ob es vielleicht bessere Lösungsvorschläge gibt und andere Methode die Informationen eines TCP Packets in seinem Programm zu verwenden.

Grüße,
ravvon
06/10/2014 22:37 tolio#2
durch ein byte array zu loopen ist durchaus eine normale vorgehensweise

du solltest außerdem auf jeden fall option strict on setzen
06/11/2014 01:34 SquadZLeader#3
Well I don't quite understand cuz its not in english
but if u wanna send packet and stuff like that
Use TpcClient
06/11/2014 13:52 ravvon#4
Danke für deine Antwort tolio,
gut zu wissen das es eine gängige Vorgehensweise ist, ich bin nur irgendwie kein Fan von solchem Code da es mir so fehleranfällig und leistungsraubend erscheint.

Wie dem auch sei, das mit dem Strict kannte ich bisher nicht, habe mir das mal bei MSDN angeschaut aber ich werde irgendwie nicht so ganz schlau daraus, also damit werden mir ja dann anscheinend Fehler beim Debuggen ausgegeben falls diese beim Konvertieren von Datentypen auftauchen, richtig?
06/11/2014 14:53 tolio#5
option strict on - deaktiviert die implizierte konvertierung von datentypen.

als bsp:
Code:
 dim int as integer = "3"
"3" ist in diesemfall ein string, der variablentyp aber eine zahl; vb erkennt das nach dem motto 'ok dann wird in dem string wohl ne zahl drinstehen, dann interpretiere ich das mal als zahl'
das funktioniert auch oft, hat aber den bösen seiteneffekt das wenn es mal nicht funktioniert die fehlersuche sehr aufwendig ist.
folglich ist es ratsam, diese funktion zu deaktivieren damit man einfach auf der sicheren seite ist.
06/11/2014 22:21 ravvon#6
Alles klar, dann danke für deine Antworten werde mir den Rat zu Herzen nehmen, Fehler muss ich schließlich schon genug in meinen Programmen suchen. ;D