2016-04-26 1 views
1

Actuellement, j'utilise Google Protocol Buffer pour envoyer des informations avec plusieurs tableaux d'entiers. Le problème est lors de l'utilisation de 1 objet avec plus de 16 tableaux d'environ 20 éléments chacun, certaines des informations à l'intérieur des tableaux sont corrompues (transformées en un autre nombre) et le reste des tableaux serait nul. Quelqu'un at-il une idée de la raison pour laquelle cela arrive et comment je peux le résoudre?Protobuff perd des données pendant la désérialisation

+0

Bienvenue dans Stack Overflow! S'il vous plaît [faites le tour] (http://stackoverflow.com/tour), jetez un oeil au centre d'aide, en particulier [comment poser une bonne question?] (Http://stackoverflow.com/help/how- demander). S'il vous plaît fournir un modèle de votre message. Le message ProtoBuf est-il envoyé par fil, stocké sur disque ou utilisé en interne? –

+0

Donc, c'est la ligne de code que j'utilise. [imgur pic] (http://imgur.com/a1GbN8I) Je l'envoie du client au serveur et de retour. –

+0

Avez-vous vérifié si le message entier a été envoyé sur le réseau? Notez que les messages Tampon de protocole ne sont pas délimités par des éléments (https://developers.google.com/protocol-buffers/docs/techniques#streaming) et ne contiennent pas d'informations sur la taille du message. Ps. Vous devriez éviter de coller le code en tant qu'image (ou toute autre ressource externe), il est préférable de coller le code dans le cadre de votre question. –

Répondre

1

De l'image, c'est protobuf-net. Je trouve peu probable que ce soit un bug dans la bibliothèque (bien que je ne vais pas l'exclure); la cause la plus fréquente d'erreurs comme celle-ci sont dans le code d'appel (votre bit, le bit nous ne pouvons pas voir), et comprennent:

  • traiter les données binaires comme une chaîne par exemple un fichier texte - et/ou à l'aide codages de texte sur les données qui sont fondamentalement pas textuelle
  • tampons ré-écriture sans suivi correctement la nouvelle fin lors de quelque chose de plus court (cela vaut également pour les fichiers aussi)
  • ne pas lire/flux d'écriture correctement (pas de vérification la valeur de retour de Read, etc)

Si vous montrez le code que vous utilisez pour lire et écrire, je suis sûr que nous pouvons trouver le problème, mais je parierais beaucoup d'argent c'est l'un des ci-dessus (ou quelque chose de similaire).