Maison > développement back-end > C++ > Comment éviter « System.Runtime.InteropServices.SafeArrayTypeMismatchException » lors de la désérialisation de structures via TCP ?

Comment éviter « System.Runtime.InteropServices.SafeArrayTypeMismatchException » lors de la désérialisation de structures via TCP ?

Mary-Kate Olsen
Libérer: 2025-01-03 04:26:39
original
469 Les gens l'ont consulté

How to Avoid `System.Runtime.InteropServices.SafeArrayTypeMismatchException` When Deserializing Structs Over TCP?

C# Désérialiser une structure après l'avoir reçue via TCP

Lorsqu'ils tentent de transmettre une structure via TCP, les utilisateurs peuvent rencontrer des problèmes de désérialisation. Plus précisément, l'exception « System.Runtime.InteropServices.SafeArrayTypeMismatchException » peut se produire lors de l'exécution du client et du serveur sur des machines distinctes. Ce problème est dû à une mauvaise gestion de la taille et de l'en-tête du paquet.

Préfixage de longueur

Pour résoudre ce problème, un préfixage de longueur approprié doit être implémenté. Cela implique l'ajout d'un en-tête fixe à chaque paquet contenant la longueur des données transmises. Le format de l'en-tête est le suivant :

[Length (4 bytes)][Header (1 byte)][Data (x byte(s))]
Copier après la connexion

Lecture d'un paquet

Pour lire un paquet, les étapes suivantes sont suivies :

  1. Lisez les 4 premiers octets (Longueur), convertissez-les et affectez-les à une variable entière.
  2. Lisez l'octet suivant (les données en-tête) et placez-le dans une variable.
  3. Lisez x octets dans un tableau d'octets (où x est l'entier déclaré à l'étape 1).
  4. Utilisez l'en-tête de données de l'étape 2 pour déterminer l'en-tête de données de l'étape 2. action à entreprendre avec vos données (le tableau d'octets de l'étape 3).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal