ArrayList zu Client übertragen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    ArrayList zu Client übertragen

    Halli Hallo!

    Ich stehe im Moment vor folgendem Problem:

    Ich habe eine Client-Anwendung (Forms) und eine Server-Konsolenanwendung.
    Die beiden kommunizieren zusammen, funktioniert alles wunderbar, bis auf das Übertragen meiner ArrayList.
    Ich lasse meinen Server einen Ordner scannen (alle 5 Minuten) und lasse den Inhalt (Ordnernamen, Dateinamen) in eine ArrayList schreiben.

    Sobald ein Client diese liste anfordert, soll der Server die ArrayList zum Client übertragen, um am Client ein TreeView damit zu füllen.
    Das Anfordern vom Client funktioniert (Befehl kommt am Server an).
    Nun stehe ich vor dem Problem wie ich die ArrayList via. StreamWriter zum Client bekomme.

    Meine Überlegung war das man die ArrayList als Byte konvertiert, nur wie geht das und geht das überhaupt? Gibt es bessere/andere/schnellere Möglichkeiten die Liste zu übertragen?

    Vielen Dank für euer bemühen!

    LG
    Robin
    Hallo

    also habe mir grad ein paar seiten und Tuts dazu angeschaut, an sich ja keine schlechte Sache, doch ist meine Anwendung doch schon recht komplex, und ich müsste sie dann, wenn ich es richtig verstanden habe, noch mal komplett überarbeiten...
    Mir fehlt in meinem Projekt halt nur noch diese eine Funktion um im Client ein TreeView zu füllen..
    HeyHo,

    werde mir das gleich mal mit dem BinaryWriter/Reader anschauen!
    Funktioniert das im Endeffekt genau so, wie mit dem StreamReader/Writer ?
    Auch die anderen Lösungsansätze hören sich gut an.. Werde aber erst mal die Idee von ErfinderDesRades anschauen.

    Gruss
    HeyHo,

    Leider funktioniert es nicht so wie ich mir das dachte.. Habe mir die MSDN zu BinaryReader/Writer angesehen nur wie sage ich meinem Client nun, das das die Daten für das TreeView sind?
    Habe das im StreamReader/Writer immer mit tmp.StartsWith("<datalist>") und tmp.endswith("</datalist>") gemacht.
    Habe mir nun gedacht das der BinaryReader/Writer ähnlich funktioniert..
    Hat jemand evl. einen kleinen Denk-Anstoß für mich? *brett>kopf*

    Liebe Grüße und schönen Sonntag!
    Okay, stelle ich die Frage etwas anders...
    Ich kann im BInaryWriter doch nicht einfach schreiben "<datatreeview>", dann das ArrayList, dann wieder "</datatreeview">...
    Bekomme grad kein logischen gedanklichen Ablauf hin, so das er auch beim BInaryW/R auch weiß welche daten wofür sind ...
    Also simplen String-Daten die ich über den StreamReader/Writer empfange/sende habe ich immer von mir ausgedachte erkennungsmuster eingebaut:

    Quellcode

    1. Dim tmp As String = con.streamr.ReadLine
    2. If tmp = "<!GetData!>" Then
    3. con.streamw.WriteLine("<!data!>Ich bin eine info oder so...</!data!>")
    4. con.streamw.Flush()
    5. End If


    So brauchte ich im Client einfach nur prüfen ob das was vom Server kommt mit <!data!> anfing und mit </!data!> endete stimmt.
    Was dazwischen ist (Ich bin eine info oder so...) war dann das womit ich meinen Clienten gefüttert habe..

    Quellcode

    1. If e.StartsWith("<!data!>") And e.EndsWith("</!data!>") Then
    2. Dim Bufferstring As String
    3. Bufferstring = e.Replace("<!track!>", Nothing)
    4. Bufferstring = Bufferstring.Replace("</!track!>", Nothing)
    5. Label1.Text = Bufferstring
    6. End If


    Hoffe es ist nun verständlicher was ich meine ...