begin process at 2010 02 09 23:48:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

Sérialization, BinaryHeader


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Sérialization, BinaryHeader

dimanche 29 avril 2007 à 17:17:45 | Sérialization, BinaryHeader

wizad

Membre Club
Bonjour,
Dans la cadre de la réalisation d'un système client/serveur, je rencontre un problème lors de la désérialisation d'un classe maison.

general :
byte[] readbuf = new byte[1024*1024]
byte[] sendbuf;

la classe Maison
[Serializable]
    public class NetworkPacket
    {
        private object cmd;
        private ArrayList args;

        public object Command
        {
            get { return cmd; }
        }

        public ArrayList Arguments
        {
            get { return args; }
        }

        public NetworkPacket(object command)
        {
            cmd = command;
            args = new ArrayList();
        }

        public void Write(object obj)
        {
            args.Add(obj);
        }
    }

La sérialisation et l'envoi (coté client):
NetworkPacket np = new NetworkPacket("TEST");
np.Write("toto");
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, np);
this.sendbuf = ms.ToArray();
// on envois le tout.
this.sock.BeginSend(this.sendbuf, 0, this.sendbuf.Length, SocketFlags.None, new AsyncCallback(SendCallback), this.sock);



La désérialisation et la récéption (coté serveur) - readbuf étant le buffer de reception sur beginreceive:
MemoryStream memStream = new MemoryStream(this.readbuf);
memStream.Seek(0, SeekOrigin.Begin);
BinaryFormatter binForm = new BinaryFormatter();
NetworkPacket np = binForm.Deserialize(memStream) as NetworkPacket;
memStream.Close();

Avec ce système aucun problème quand un seul client est connecté je récupère bien mes networkpacket.
Par contre dés qu'un deuxème client arrive j'obtiens systématiquement ceci :

Exception: System.Runtime.Serialization.SerializationException
Le flux binaire '0' ne contient pas de BinaryHeader valide. Les raisons possibles sont un flux non valide ou une modification de la version de l'objet entre la sérialisation et la désérialisation.
   à System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   à System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   à System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   à System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
   à NetAccess.Server.ReceiveCallback(IAsyncResult ar) dans E:\NetAccess\NetAccess\Server.cs:ligne 125

--
William POTTIER, developpeur freelance
dimanche 29 avril 2007 à 17:31:51 | Re : Sérialization, BinaryHeader

wizad

Membre Club
je précise que le serveur traite les clients et receptions de façon complètements asynchrone.

--
William POTTIER, developpeur freelance
dimanche 29 avril 2007 à 18:12:18 | Re : Sérialization, BinaryHeader

wizad

Membre Club
Réponse acceptée !
Problème résolu : en fait j'utilisais le même buffer deux reception pour les différents clients ce qui fait qu'il se telescopait au niveau de la reception dans les thread séparé sur le même buff.

--
William POTTIER, developpeur freelance
mardi 7 avril 2009 à 22:02:57 | Re : Sérialization, BinaryHeader

mimosa803

Bonsoir, j'ai rencontré le même problème que vous, je souhaite savoir qu'est ce que vous avez fait ?


Cette discussion est classée dans : public, system, runtime, binaryformatter, networkpacket


Répondre à ce message

Sujets en rapport avec ce message

[C#][ActiveX][Thread][HTML/Javascript] Evénements OK mais pas dans tous les cas [ par Mediant ] Bonjour !Voilà, j'au dû me mettre au C# il y a quelque jours afin de réaliser un composant ActiveX. J'ai besoin que ce composant puisse m'envoyer des System.Runtime.Remoting.Channels.Http introuvable [ par joserwan ] Bonjour à tous,Je suis incapable de trouver la classe System.Runtime.Remoting.Channels.Http ! J'ai bien System.Runtime.Remoting.Channels, mais en tapa Non remise à jour des datas avec Fill [ par ducker88 ] Bonjour à tous, Afin de me connecter à une base de données PostgreSQL j'ai créé  :  un odbcConnection appelé connection_article,  un odbcDataAdapter a System.Runtime.InteropServices.COMException : COM object with CLSID {...} is either not valid or not registered. [ par Piloufesse ] Bonjour a tous,Je ne sais pas si j'envoie cette question avec le bon thème mais bon c'est pas grave...J'ai fait une application qui se sert d'Excel en Plusieurs structures imbriquées [ par F0ra ] Bonjour, Je voudrais réaliser plusieurs structures imbriquées Comme : Couches[1].Neurons[1].w[1]=0 Dans le ficier Ia.cs : using System; using System s'en sortir avec un FileStream [ par zoot06 ] Bonjour tout le monde, Voila je pensais bien faire avec ma fonction FileStream, mais quelque chose gache tout ce qui fait qui ne fonctionne pas.Voici C# - Erreur NullReferenceException [ par skyline86 ] Bonjour, 'ai un message NullReferenceExceptionsur la ligne     Program.monFormulaire.lb_log.BeginInvoke(new GPRSListener.Principale.affichageLog( struct avec tableau de struc [ par mouloud42 ] salut,j'ai un pb de compilation quand je met ce code, à chaque déclarations le compilo m'envoie boulé quand c'est pas une varialb c'est l'autre, un ca timer dans un usercontrol [ par johnnous ] bonjour j'ai un soucis je souhaite faire un bouton clignotant donc j'ai ajouter la propriete Twinkling qui lorsqu'elle passe a true m'active mon timer


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales