IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Sérialisation d'un objet booléen


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut Sérialisation d'un objet booléen
    Bonjour,

    J'ai réalisé un code qui permet de désérialiser un objet de type bool puis de l'envoyer via un socket. Mon programme génère une exception :

    à 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)


    En fait le serveur, sérialise un objet booléen puis l'envoie au client. Ce dernier va désérialiser la valeur. Côté serveur je n'ai pas de problème.

    Voilà le code de la partie clilent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     try
              {
                client = new TcpClient(serveur, port);
                IdentificationClient.LoginClient = txtLogin.Text.ToString();
                IdentificationClient.PasswordClient = txtPassword.Text.ToString();
     
                NetworkStream fluxClient = client.GetStream(); // the stream
                #region Envoyer le login et le mot de passe au serveur
                if (fluxClient.CanWrite)
                {
                    MemoryStream ms = new MemoryStream();
                    IFormatter bf = new BinaryFormatter();
                    bf.Serialize(ms, IdentificationClient);
                    byte[] writerbuffer = ms.GetBuffer(); // we have the byte[] array!
                    //byte[] writerbuffer = Encoding.UTF8.GetBytes(txtLogin.Text.ToString());
                    fluxClient.Write(writerbuffer, 0, writerbuffer.Length);
                    //MessageBox.Show(writerbuffer.Length.ToString());
                    fluxClient.Close();
                    ms.Close();
                } 
                #endregion
     
                #region Désérialisation et récupération de la réponse du serveur
                //NetworkStream fluxClient1 = client.GetStream();
                bool p;
                if (fluxClient.CanRead)
                {
                    byte[] data = new byte[client.ReceiveBufferSize];
                    MemoryStream ms2 = new MemoryStream(data);
                    fluxClient.Read(data, 0, (int)client.ReceiveBufferSize);
                    IFormatter formatter = new BinaryFormatter();
                    p = (bool)formatter.Deserialize(ms2); // you have to cast the deserialized object
     
                    MessageBox.Show("yes" + p.ToString());
                    fluxClient.Close();
                    ms2.Close();
                }
                else
                {
                    MessageBox.Show("Impossible de lire");
                }
                #endregion
     
                  //if (p==true)
                     // MessageBox.Show("Bienvenue "+IdentificationClient.LoginClient);
                  //else
                     // MessageBox.Show("Erreur d'identification, veuillez vérifier vos paramètres");
              } 
              catch (Exception E) 
              {
                  MessageBox.Show(E.StackTrace);
              }

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Le code que j'ai ajouté ici t'aidera-t-il?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 236
    Par défaut
    Bonjour,

    J'ai lu votre code, c'est ce que je cherche mais j'ai rencontré un nouveau problème : est ce que le client ou le serveur peut envoyer et lire les données en même temps car quand j'ai testé chacun fait une seule chose (Je dois faire des threads ou bien je ne suis pas obligé).
    En tous cas je teste à chaque fois sur le NetworkStream soit il peut écrire soit il peut lire, du cout j'ai remarqué qu'il y a toujours une seule chose.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/01/2010, 19h28
  2. sérialisation hiérarchie d'objets
    Par g0up1l dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 23/10/2008, 13h31
  3. objet booléen en 0/1 léger
    Par Carlito_superheros dans le forum Langage
    Réponses: 9
    Dernier message: 04/08/2008, 16h29
  4. Problème de sérialisation d'un objet de type form
    Par anas.eh dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/08/2007, 19h07
  5. Réponses: 6
    Dernier message: 17/01/2006, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo