zpracování TCP komunikace   otázka

VB.NET, Algoritmy, WinForms

Zdravím, potřeboval bych trochu nasměrovat.

Pomocí následujících metod obdržím 1024 bytů dlouhý string

Private Sub Rcv(ByVal ar As IAsyncResult)
        ' Start the data receiving process 
        Dim intCount As Integer

        Try
            'data ready end the read
            SyncLock tcpClnt.GetStream
                intCount = tcpClnt.GetStream.EndRead(ar)
            End SyncLock
            If intCount < 1 Then
                RaiseEvent Disconnected()
                Exit Sub
            End If

            'put the byte daa into a string
            BuildString(arData, 0, intCount)
            SyncLock tcpClnt.GetStream
                tcpClnt.GetStream.BeginRead(arData, 0, 1024, AddressOf Rcv, Nothing)
            End SyncLock
        Catch e As Exception
            RaiseEvent Disconnected()
        End Try
    End Sub

    Private Sub BuildString(ByVal Bytes() As Byte, ByVal offset As Integer, ByVal count As Integer)
        Dim intIndex As Integer
        Dim txt As String

        objText = New StringBuilder
        For intIndex = offset To offset + count - 1
            txt = ChrW(Bytes(intIndex))
            objText.Append(txt)
        Next
        RaiseEvent Receive(objText.ToString)

    End Sub

Takovej string může být například:

<xml Len="194" ID="0" Li="66"><data DateTime="2014-05-13 09:49:03" LRTP="3" LRTS="60" ModulName="S47" GroupName="Spojovaèky" IPAdr="172.27.70.205" EthPort="10001" InNum="1" InCount="0" /></xml>

<xml Len="194" ID="0" Li="67"><data....... atd.

Ale taky například:

teTime="2014-05-13 09:49:03" LRTP="3" .... atd pokud posílaná zpráva byla dlouhá a rozdělilo se to tedy do více částí, takže tahle druhá část už začíná "teTime"

Potřeboval bych tedy proceduru která bude reagovat na event Receive spouštěný procedurou BuildString která mi z toho stringu vyseparuje všechny <xml ... ></xml> a co zbude (už se blíží konec bufferu, takže je pokračování v další várce) nechá a další várku připojí k tomu, zase vyseparuje <xml ....></xml> atak dále. Dá se použít atribut Li="xx" kde xx je počet znaků od začátku <xml ... až po </xml>

Mohl by mě někdo nasměrovat, jakým způsobem to uchopit?

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback