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 :

petit problème avec Socket.Avalaible en C#


Sujet :

C#

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut petit problème avec Socket.Avalaible en C#
    Bonjour,

    Je développe actuellement un mini-chat en c# pour étudier les Socket. Voilà, ce que je voudrai faire c'est un chat clients-serveur.
    Le problème est côté client, j'ai fait 2 MessageBox successifs qui affiche des valeurs différentes :
    MessageBox.Show("ClientSocket.Avalaible = " +ClientSocket.Avalaible); //affiche : ClientSocket.Avalaible = 49
    MessageBox.Show("ClientSocket.Avalaible = " +ClientSocket.Avalaible); //affiche : ClientSocket.Avalaible = 0

    je ne comprend pas! Alors que les 2 instructions se suivent

    Voici en pièces jointes mes 3 Form.
    Le problème se trouve dans FormDiscussion -> CheckData()
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    private void CheckData()
            {
                try
                {
                    while (true)
                    {
                        if (ClientSocket.Connected)
                        {
     
                            if (ClientSocket.Poll(10, SelectMode.SelectRead) && ClientSocket.Available == 0)
                            {
                                //La connexion a été cloturée par le serveur ou bien un problème
                                //réseau est apparu
                                MessageBox.Show("La connexion au serveur est interrompue. Essayez avec un autre pseudo");
                                Thread.CurrentThread.Abort();
                            }
                            //Si la socket a des données à lire
     
                            if (ClientSocket.Available > 0)
                            {
                                string messageReceived = null;
                                MessageBox.Show("ClientSocket.Available : " + ClientSocket.Available + "  " + pseudo);
                                MessageBox.Show("ClientSocket.Available : " + ClientSocket.Available + "  " + pseudo);
                                while (ClientSocket.Available > 0)
                                {
                                    try
                                    {
                                        byte[] msg = new Byte[2000];
                                        //Réception des données
                                        ClientSocket.Receive(msg, 0, ClientSocket.Available, SocketFlags.None);
                                        messageReceived = System.Text.Encoding.ASCII.GetString(msg).Trim();
                                        MessageBox.Show("MessageReceived :"+messageReceived);
                                        //On concatène les données reçues(max 4ko) dans
                                        //une variable de la classe
                                        rtfContent += messageReceived;
                                    }
                                    catch (SocketException E)
                                    {
                                        MessageBox.Show("CheckData read" + E.Message);
                                    }
                                }
     
                                try
                                {
                                    //On remplit le richtextbox avec les données reçues 
                                    //lorsqu'on a tout réceptionné
                                    Discussion(rtfStart + rtfContent);
                                }
                                catch (Exception E)
                                {
                                    MessageBox.Show(E.Message);
                                }
     
                            }
     
                        }
     
                        //On temporise pendant 10 millisecondes, ceci pour éviter
                        //que le micro processeur s'emballe
                        Thread.Sleep(10);
                    }
                }
                catch (Exception e)
                {
                    //Ce thread étant susceptible d'être arrêté à tout moment
                    //on catch l'exception afin de ne pas afficher un message à l'utilisateur
                    Thread.ResetAbort();
                    MessageBox.Show(e.Message);
                }
            }
    Fichiers attachés Fichiers attachés

  2. #2
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Je suis triste que personnes ne m'ait répondu

    J'ai trouvé moi même la source du problème. J'ai oublié d'arrêter le thread "DataReceived" avant de charger "FormDiscussion" donc quand MonServeur envoi des données à un client, le thread "DataReceived" dans "FormConversation" et le thread "DataReceived" dans "FormDiscussion" écoutent en même temps les données envoyées par le serveur.

    Carole.

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

Discussions similaires

  1. [OCaml] Petit problème avec les sockets
    Par Fractal LLG dans le forum Caml
    Réponses: 3
    Dernier message: 28/02/2008, 12h18
  2. Un petit problème avec pop
    Par Paulinho dans le forum C++
    Réponses: 4
    Dernier message: 13/11/2005, 20h57
  3. Petit problème avec Line Input
    Par GrosQuicK dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/09/2005, 12h47
  4. (Petit ?) problème avec une page contenant du Flash
    Par ologram dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/09/2005, 18h45
  5. Petit problème avec SDL
    Par Nyarlathotep dans le forum C
    Réponses: 10
    Dernier message: 01/07/2005, 09h10

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