Benutzer mit den meisten Antworten
Daten über NetworkStream senden

Frage
-
Hallo.
Ich sende meine Daten zwischen Client und Server über den NetworkStream.
Nun bin ich an einen Punkt gelangt, andem ich ganze Klassen, Listen o.ä. senden möchte.Vorher habe ich nur strings versand.
Diese habe ich mit einem vorangestelltem, von mir eindeutig definiertem Namen, trennen können.z.B.:
"singlemsg=Hallo Du."
"multimsg=Hallo Ihr."So konnte ich unterscheiden.
Nun möchte ich aber (Um mal spezifisch einzugehen) eine List<EigeneKlasse> versenden.
Wie bewerkstellige ich dies?
Meine Klasse zum Senden:
Auf der anderen Seite muss ich die empfangen Daten nun auch wieder rekonstruieren und vor allem identifizieren.public bool SendMessage(TcpClient tcpClient, string message) { try { this.networkStream = tcpClient.GetStream(); ASCIIEncoding encoder = new ASCIIEncoding(); byte[] buffer = encoder.GetBytes(message); this.networkStream.Write(buffer, 0, buffer.Length); this.networkStream.Flush(); return true; } catch (Exception) { return false; } }
Jemand einen Link o.ä.?
Ich habe bis dato nichts gefunden.
Danke
Antworten
-
Schau dir mal die Klasse XmlSerializer an.
Damit kannst du ein beliebiges (serialisierbares) Objekt in einen Stream schicken. Das geht auch mit Listen von diesem Objekt.
Du musst beim Empfangen allerdings prüfen, wo die Daten enden. Das kannst du sicher in dein Protokoll einbauen (z.B. anzahl der XML-Bytes die kommen etc).
Es gibt diverse andere Serialisierer. XML ist ganz praktisch, weil man das zur Not auch noch lesen kann.
Ansonsten wäre sowas eventuell auch was für einen WebService, wo du direkt die Objekte an eine Zielfunktion schicken kannst. Dann brauchst du dir keine gedanken um die Übertragung und dekodierung machen. Das machen dann die WCF Klassen.
Viel Spass
- Als Antwort markiert ActiveServerPage Sonntag, 5. Juni 2011 20:36
Alle Antworten
-
Schau dir mal die Klasse XmlSerializer an.
Damit kannst du ein beliebiges (serialisierbares) Objekt in einen Stream schicken. Das geht auch mit Listen von diesem Objekt.
Du musst beim Empfangen allerdings prüfen, wo die Daten enden. Das kannst du sicher in dein Protokoll einbauen (z.B. anzahl der XML-Bytes die kommen etc).
Es gibt diverse andere Serialisierer. XML ist ganz praktisch, weil man das zur Not auch noch lesen kann.
Ansonsten wäre sowas eventuell auch was für einen WebService, wo du direkt die Objekte an eine Zielfunktion schicken kannst. Dann brauchst du dir keine gedanken um die Übertragung und dekodierung machen. Das machen dann die WCF Klassen.
Viel Spass
- Als Antwort markiert ActiveServerPage Sonntag, 5. Juni 2011 20:36