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 :

StreamReader.Read(char[],int32,int32) qui plante ?!?


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut StreamReader.Read(char[],int32,int32) qui plante ?!?
    Pourquoi ca plante chez moi :heink:

    ns = NetworkStream
    sr = StreamReader

    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
                string Response = "";
                char[] c=null;
                StringBuilder databuild = new StringBuilder("");
                if (ns != null)
                {
                        if(ns.DataAvailable)
                        {
                            while (sr.Peek() >= 0)
                            {
                                c = new char[1024];
                                sr.Read(c, 0, c.Length);
     
                                databuild.Append(c);
                            }
                            Response = databuild.ToString();
                        } 
                }
                return Response;

    Edit:

    J'explique en détail le contexte,

    J'ai un serveur qui envoie des infos par paquet de char[] 1024 à l'aide d'un streamwriter.

    Ce code correspond au coté client qui recoit les paquets, je les lis donc tant qu'il y a des données sur le streamreader while(sr.peek() >= 0) on lis un paquet de 1024.


    Mais ce code (pris sur le msdn de microsoft) plante.

    J'ai fais pas à pas pour voir le probleme et je constate que:

    Mon serveur envoie deux paquet au départ (jusque la normal),

    le programme coté client rentre dans la boucle, car if (ns.dataavailable) est bien a true. Mon streamreader doit donc avoir recu les 2048 caracteres (des deux paquets de 1024 envoyer par le serveur),

    donc le programme fais un premier Read, le premier paquet de 1024 est bien lu.

    Ensuite ma boucle while (sr.peek >=0) informe le programme qu'il y a encore des données, il reste en effet le deuxieme paquet a lire,

    donc le programme continue dans la boucle et refais un read, ce coup ci juste apres le read il plante méchant ! le programme gele et j'ai plus qu'a arreter le debug...

    Je comprend donc qu'il plante car j'ai "sucer" tout le contenue du streamreader... je suis au courant que lorsqu'on fais un .read sur un streamreader vide ca plante, mais la le mien contenait encore des infos... j'ai juste tout "sucer"...

    alors bon, si ce code plante j'aimerai un coup de pouce pour y remedier merci pour votre aide

  2. #2
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Je ne faisais pas de streamwriter.close(); coté serveur apres l'envoie des données.

    J'ai honte

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Ah mais, si je fais un streamwriter.close(); coté serveur,

    le client ne plus lire les données du coup ,

    Mon probleme est donc toujours d'actualité


    J'espere que quelqu'un saura m'aider

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Finalement, tout fonctionne parfaitement avec des sockets

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

Discussions similaires

  1. PB d'update qui plante aléatoirement sans renvoyer d'erreur
    Par plc402 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/08/2005, 09h10
  2. [Novice] Problème avec Eclipse 3.0.x qui plante
    Par esolarc dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2005, 13h22
  3. Programme qui plante
    Par harris_macken dans le forum C++
    Réponses: 1
    Dernier message: 22/05/2005, 23h50
  4. Pc qui plante
    Par tooms2028 dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 19/03/2005, 17h32
  5. [JTextArea] redessin qui plante
    Par phil_ma dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2005, 05h19

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