Was ich versuche zu erreichen, ist ein Client einen String plus eine Datenstruktur über einen Socket senden, und einen Server erhalten, um es zu lesen und zu verarbeiten.C# senden gemischte Daten über den Socket
Zum Beispiel: Der Client sendet eine Zeichenfolge „speichern“ von einem JSON gefolgt, sollte der Server den ersten String analysiert und dann entsprechend zu handeln entscheiden (in diesem Fall sollte es die JSON deserialisieren und es irgendwo speichern)
Was ich dachte: der Server
byte[] buffernew = new byte[8];
Lesen Sie den ersten Brocken, die enthält nur die Zeichenfolge und dann deseria die Eingangsdaten in Blöcken von 8 Bytes aufteilen könnte Lize, welches Objekt in den nächsten Byte-Blöcken übergeben wird. (Sollte ich auch einen letzten 8-Byte-Chunk in Betracht ziehen, um zu sagen, dass die Kommunikation vorüber ist? z.B. eine klassische Zeichenkette?)
Ist dies eine praktikable Lösung? Gibt es einen besseren Weg?
Kann jemand eine Skizze der Lösung der Serverseite zur Verfügung stellen?
empfangenden Ende einer Verbindung benötigen das Ende jedes Datenelements kennen (s). So können Sie einen oder mehrere der folgenden verwenden: 1) Ascii: Beenden mit einem bekannten Zeichen 2) Ascii oder Binary: Hinzufügen einer Byteanzahl zum Anfang von Datenelementen 3) Ascii oder binär: Datenelement (e) fester Länge. Sie können keine Zeichenfolgen senden, die eine Klasse in C# sind, so dass Sie eine Zeichenfolge in ein Byte [] konvertieren und mit '\ 0' enden. Eine Struktur kann fest oder variabel sein. Eine Struktur mit fester Größe kann einfach gesendet werden. Eine Struktur mit variabler Größe jedes Datenelement muss mit einer der drei obigen Methoden beendet werden. – jdweng
Hinzufügen einer Byteanzahl scheint gut, aber wie erhalten Sie dann die Anzahl und verwenden Sie es zum Teilen von Informationen in Ihrem Byte-Input-Stream? – SOROMEED
Wenn die Byte-Anzahl die Summe von String + Struktur ist und Sie die Zeichenfolge mit '\ 0' beenden, können Sie die Länge der Zeichenfolge abrufen. Die Struktur ist die Gesamtlänge - Stringlänge. Jedes Element benötigt eine spezifische Methode zur Bestimmung der Anfangsposition und der Endposition, die aus früheren Daten erhalten werden kann. Das Ganze ist immer gleich der Summe der Teile. – jdweng