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 :

probleme de clients/serveur


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut probleme de clients/serveur
    Salut ,
    je suis entrain de programmer un prog de chat.
    j'ai codé la partie Serveur dont la méthode "ecrire" ci dessous.
    la variable "demande2" est celle ecrite par le serveur sur la fenetre en cliquant sur envoyer
    Bon , supposons que dans "demande2" on a une partie dont on a vers qui on envoie le message , donc dans la variable "vers" on a le nom du client.
    On a aussi une variable connected de type dictionary .
    d'ou la variable testtcp va contenir le TCPCLIENT à qui on va envoyer le message .
    mais malheureusement ça marche pas, la compilation çava, mais à l'execution on aura un probleme dés que je tape une 2 eme fois "demande2"
    c à dire , il vas m'afficher une seule fois "hello" puis il se bloque.
    merci de m'aider.

    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
     public static void ecrire(Object stateInfo)
          {
         TcpClient testtcp;
         string vers
              while (true)
              {
                if (demande2 != null)
                  {
     
                      connected.TryGetValue(vers, out testtcp);/
                      try
                      {
                          using (TcpClient tcpClient = testtcp)
                          {
                              using (NetworkStream networkStream=tcpClient.GetStream())
                              {
                                  using (StreamWriter writer = new StreamWriter(networkStream))
                                  {
                                      writer.WriteLine("hello");
                                      demande2 = null;
                                      Thread.Sleep(100);
                                  }
                              }
                          }
                      }
     
                      catch (Exception e)
                      {
                          ....
                      }
                  }
              }
          }

  2. #2
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    En enlevant la boucle Try...Catch, obtiens-tu une erreur?

    Sinon le Debug est un outil plus qu'utile, tu devrais déjà rechercher de ce coté-là je pense.

    Au niveau de ton code, je dirais que ta boucle While à de gros risque de tourner dans le vide (infini).

    Mais le mieux serait que tu attendes l'avis d'un expert...

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut
    j'ai enlevé Try mais c le mm .
    pour la boucle , elle n'entre à try seulement si on appuie sur le bouton Envoyer ("demande2!=null")

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    attention quand tu utilises un bloc using... le bloc suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    using (TcpClient tcpClient = testtcp)
    {
        ...
    }
    est en fait équivalent à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TcpClient tcpClient = null;
    try
    {
        tcpClient = testtcp;
     
        ...
    }
    finally
    {
        if (tcpClient != null)
            tcpClient.Dispose();
    }
    Autrement dit, ton TcpClient est "disposé", si bien que la 2e fois ça plante...
    Idem pour le NetworkStream et le StreamWriter : si tu fermes le NetworkStream, tu ne peux plus communiquer avec le client... Et quand tu fermes le StreamWriter, ça ferme aussi le stream sous-jacent. Donc en fait, tu ne devrais pas utiliser de block using dans ce cas...

    Normalement, using sert si tu veux manipuler un objet "temporaire" qui ne doit exister que dans un certain scope. Si l'objet doit continuer à exister en dehors de ce scope, n'utilise pas using

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 42
    Par défaut
    merci beaucoup
    ça marche maint

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    pense au bouton stp...

Discussions similaires

  1. Probleme communication Client Serveur
    Par amadoulamine1 dans le forum Général Java
    Réponses: 1
    Dernier message: 16/07/2008, 19h14
  2. probleme base client/serveur
    Par maya76 dans le forum WinDev
    Réponses: 12
    Dernier message: 15/01/2008, 22h41
  3. Réponses: 5
    Dernier message: 23/06/2007, 10h45
  4. Probleme Client / Serveur
    Par Kinian dans le forum Access
    Réponses: 4
    Dernier message: 16/06/2006, 10h12
  5. Probleme connexion Client 10g --> Serveur 8.1.7.4
    Par droopyy dans le forum Oracle
    Réponses: 9
    Dernier message: 24/03/2006, 16h05

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