W&T
+ Chr((ReadCounter.send_sequenz And &HFF00) / &H100) _
+ Chr(ReadCounter.rec_sequenz And &HFF) _
+ Chr((ReadCounter.rec_sequenz And &HFF00) / &H100) _
+ Chr(ReadCounter.struct_typ And &HFF) _
+ Chr((ReadCounter.struct_typ And &HFF00) / &H100) _
+ Chr(ReadCounter.length And &HFF) _
+ Chr((ReadCounter.length And &HFF00) / &H100) _
+ Chr(ReadCounter.counter_index And &HFF) _
+ Chr((ReadCounter.counter_index And &HFF00) / &H100)
Winsock1.SendData (Str_ReadCounter)
End Sub
Zuletzt noch die Prozedur, die das Winsock-Steuerelement
automatisch aufruft, wenn Daten vom Netzwerk empfangen
werden. Die Umsetzung geschieht hier genau umgekehrt.
Das bedeutet, die Daten kommen als String an und werden
in die Struktur Counter zurückgeschrieben.
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'// Einlesen der eingehenden Daten in den String Str_Counter
Winsock1.GetData Str_Counter
'// Auslesen der einzelnen Bytes, Berechnen der Wertigkeit (Low Byte, High Byte)
'// und Speichern in der Struktur Counter
Counter.send_sequenz = Asc(Mid(Str_Counter, 1, 1)) _
+ Asc(Mid(Str_Counter, 2, 1)) * &H100
Counter.rec_sequenz = Asc(Mid(Str_Counter, 3, 1)) _
+ Asc(Mid(Str_Counter, 4, 1)) * &H100
Counter.struct_typ = Asc(Mid(Str_Counter, 5, 1)) _
+ Asc(Mid(Str_Counter, 6, 1)) * &H100
Counter.length = Asc(Mid(Str_Counter, 7, 1)) _
+ Asc(Mid(Str_Counter, 8, 1)) * &H100
Counter.counter_index = Asc(Mid(Str_Counter, 9, 1)) _
+ Asc(Mid(Str_Counter, 10, 1)) * &H100
Counter.counter_value = Asc(Mid(Str_Counter, 11, 1)) _
+ Asc(Mid(Str_Counter, 12, 1)) * &H100 _
+ Asc(Mid(Str_Counter, 13, 1)) * &H10000 _
+ Asc(Mid(Str_Counter, 14, 1)) * &H1000000
End Sub
Das gezeigte Beispiel kann natürlich auch auf alle anderen
Strukturen umgesetzt werden.
130
TCP / UDP - Binary