Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich eine über TCP in C# empfangene Struktur korrekt und vermeide SafeArrayTypeMismatchException?

Wie deserialisiere ich eine über TCP in C# empfangene Struktur korrekt und vermeide SafeArrayTypeMismatchException?

Patricia Arquette
Freigeben: 2024-12-31 03:41:13
Original
341 Leute haben es durchsucht

How to Correctly Deserialize a Struct Received Over TCP in C# and Avoid SafeArrayTypeMismatchException?

Deserialisieren einer über TCP in C# empfangenen Struktur

Problem:

Beim Senden einer serialisierten Struktur , RemuseNetworkPacket, über TCP führt die Deserialisierung auf einem separaten Computer zu einer SafeArrayTypeMismatchException. Das Längenpräfixformat ist l=xxxx;;, wobei xxxx die Paketlänge darstellt.

Lösung:

Das Problem entsteht dadurch, dass das Längenpräfix als Zeichenfolge behandelt wird anstelle einer ganzen Zahl. Das Längenpräfix sollte korrekt implementiert sein:

  1. Paketlänge in Bytes konvertieren:Konvertieren Sie die Länge der Paketdaten (ohne Längenpräfix und Header) in ein Byte-Array. Dies führt normalerweise zu 4 Bytes.
  2. Längenpräfix und Header hinzufügen: Verketten Sie das Längenbyte-Array mit dem Paketdaten-Header und den tatsächlichen Paketdaten.
  3. Paketstruktur: Die resultierende Paketstruktur sollte sein: [Länge (4 Bytes)][Header (1 Byte)][Daten (x Byte(s)).

Empfangen und Deserialisieren:

  1. Leselänge: Die ersten 4 Bytes lesen ( Länge) und konvertieren Sie sie in eine ganze Zahl.
  2. Kopfzeile lesen:Weiter lesen Byte (Header).
  3. Daten lesen:X Bytes (wobei x die in Schritt 1 erhaltene Länge ist) in ein Byte-Array lesen.
  4. Paket deserialisieren : Verwenden Sie den Header aus Schritt 2, um die geeignete Deserialisierungsmethode zu bestimmen und sie auf das Byte-Array aus Schritt anzuwenden 3.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich eine über TCP in C# empfangene Struktur korrekt und vermeide SafeArrayTypeMismatchException?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage