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 :

NetworkStream.Read ne read pas.


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 94
    Points : 98
    Points
    98
    Par défaut NetworkStream.Read ne read pas.
    Bonjour,

    J'essaie de communiquer avec un serveur en utilisant un NetworkStream. J'envoie une trame au serveur qui doit me répondre. Voilà mon code:
    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
     
     
     
                NetworkStream stream;
                String reponse;
                try
                {
                    stream = sock.GetStream();
     
                }catch(IOException e) {
                    return e.Message;
                }
     
                //creation de la trame
                String trame = CreationTrame(txt, txt, entier);
     
                //envoie de la trame
                try
                {
                    // Conversion du message en ASCII
                    Byte[] data = Encoding.ASCII.GetBytes(trame);
     
                    stream.Write(data, 0, data.Length);
                    stream.Flush();
                }
                catch (Exception e)
                {
                    return e.Message;
                }
     
                //Attente de la réponse
                try
                {
                    reponse = String.Empty;
                    // Buffer to store the response bytes.
                    Byte[] buffer = new Byte[256];
                    int cpt = 1;
                    int byteSize = 0;
     
                    while ((byteSize = stream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        reponse += buffer.ToString();
                    }
                }
                catch (Exception e)
                {
                    return e.Message;
                }
    Tout se passe bien jusqu'à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((byteSize = stream.Read(buffer, 0, buffer.Length)) > 0)
    Mon programme se freeze, et lorque je mets un point d'arrêt je n'ai aucune erreur mais le curseur s'arrête sur l'expression stream.Read(buffer, 0, buffer.Length) et disparaît...

    J'aimerai savoir ce que je ne fais pas bien.
    Merci d'avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 203
    Points : 220
    Points
    220
    Par défaut
    Pour le freeze je ne sais pas par contre il faut remplacer

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Encoding .ASCII.GetString(buffer)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 94
    Points : 98
    Points
    98
    Par défaut
    Oui merci

    Sinon je viens de trouver la réponse. Il faut que j'écoute la trame byte par byte comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char rep = (char)stream.ReadByte();
    while (rep != (char)0x06)
    {
      reponse += rep;
      rep = (char)stream.ReadByte();
    }
    Je m'arrete lorsque je rencontre le charactére de fin de la trame. Et là ça marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vraie différence entre repeatable read et read commited ?
    Par Fanfaron dans le forum Langage SQL
    Réponses: 9
    Dernier message: 25/02/2014, 09h46
  2. le passage de Startup read only à read write
    Par bestsuan dans le forum Administration
    Réponses: 2
    Dernier message: 03/09/2008, 14h10
  3. BufferedInputStream read ou read(byte[])
    Par gl0be dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 30/04/2008, 07h59
  4. [Erreur] "Record(s) cannot be read; no read permission on 'DT'"
    Par ajuveneton dans le forum Sécurité
    Réponses: 1
    Dernier message: 30/05/2007, 12h03
  5. mémoire peut pas etre "read"
    Par zhoom dans le forum C
    Réponses: 7
    Dernier message: 05/11/2005, 11h56

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