vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Bytes in Structure einordnen 
Autor: CodenameReese
Datum: 19.01.10 11:25

Halli Hallo, Ich bin es schonwieder
Häng jetzt an einer anderen Stelle fest... und zwar ist doch bei einer UDP-Verbindung nicht dafür gesorgt das die Pakete in der richtigen Reihenfolge bei mir ankommen oder? So nun versuch ich das ganze mit "Buffern" zu lösen... denn alle Pakete enthalten eine Zeit zu der sie verschickt wurden dh es kann vorkommen das ein Paket das zu einem späteren Zeitpunkt verschickt wurde vor dem "neueren" bei mir ankommt^^
Mein Ansatz sieht so aus (Beispielcode):

Public Class Form1
 
    Private MainThread As Thread = New Thread(AddressOf StartListener)
 
    Private Port As Integer = 12345
    Private ID As Integer = 1
 
    Private Done As Boolean = False
    Private Packet As Test
 
    Private Structure Test
        Dim Time As UInteger
        Dim Var1 As Single
        Dim ID As Integer
    End Structure
 
    Private Sub Form1_Load([...]) Handles MyBase.Load
        MainThread.Start
    End Sub
 
    Private Sub Form1_FormClosing([...]) Handles MyBase.FormClosing
        Done = True
        MainThread.Abort
    End Sub
 
    Private Sub StartListener()
 
        Dim Buffer1 As Test
        Dim Buffer2 As Test
 
        Dim Listener As New UdpClient(Port)
        Dim EndPoint As New IPEndPoint(IPAddress.Any, Port)
 
        Dim Pt As Integer
 
        Try
 
            While Not Done
 
                Dim Data As Byte() = Listener.Receive(EndPoint)
 
                Pt = 0
                Buffer1.Time = BitConverter.ToUInt32(Data, Pt)
                Pt += 4
                Buffer1.Var1= BitConverter.ToSingle(Data, Pt)
                Pt += 4
                Buffer1.ID = BitConverter.ToInt32(Data, Pt)
                Pt += 4
 
                If Buffer1.ID = ID Then
 
                    Select Case Buffer1.Time
                        Case Is > Buffer2.Time
 
                            Buffer2 = Buffer1
 
                        Case Else
 
                            Buffer2 = Buffer1
                            Buffer1 = Packet
 
                    End Select
 
                    Packet = Buffer2
 
                End If
 
            End While
 
        Catch ex As Exception
            MsgBox(ex.Message)
        Finally
            Listener.Close()
        End Try
 
    End Sub
End Class
Mein Problem dabei ist... das auf diesem Wege ja irgendwie trotzdem als erstes das "alte" Paket verarbeitet wird oder auch nur ein Teil davon^^ (Verarbeitet wird dann praktisch "Packet") Außerdem wenn ich das so mache geht mir ja das "alte" Paket flöten
Und da bin ich mit meinem Latein am Ende... vll hab ich auch nur irgendwie in Denkfehler!?
Brauch ich denn sowas überhaupt? Weiß ja nicht was zu einem UDPClient so alles dazugehört

MFG Reese
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bytes in Structure einordnen2.656CodenameReese14.01.10 22:54
Re: Bytes in Structure einordnen1.763Drapondur15.01.10 03:10
Re: Bytes in Structure einordnen1.725Manfred X15.01.10 04:55
Re: Bytes in Structure einordnen1.745CodenameReese15.01.10 17:21
Re: Bytes in Structure einordnen1.804Manfred X15.01.10 18:13
Re: Bytes in Structure einordnen1.729CodenameReese17.01.10 19:28
Re: Bytes in Structure einordnen1.816CodenameReese19.01.10 11:25
Re: Bytes in Structure einordnen1.655ModeratorDaveS19.01.10 11:29
Re: Bytes in Structure einordnen1.706CodenameReese19.01.10 12:06

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel