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 :

[C# 2.0] Client - Serveur : Comment tester l'état d'un socket ?


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [C# 2.0] Client - Serveur : Comment tester l'état d'un socket ?
    Bonjour,

    Je souhaite pouvoir détecter la déconnexion d'un socket client,

    Voici 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
    byte[] sBuffer = null;
                Socket listner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                Socket client = null;
     
                try
                {
                        listner.Bind(new IPEndPoint(IPAddress.Any, 23));
     
     
                        listner.Listen(0);
     
                        client = listner.Accept();
     
                        sBuffer = new byte[256];
                        sBuffer = Encoding.ASCII.GetBytes("Bonjour!");
                        client.Send(sBuffer, 0, sBuffer.Length, SocketFlags.None);
                        try
                        {
                            //retourne toujours true même après déconnexion du client!!!
                            while (client.Connected==true)
                            {
                                client.Receive(sBuffer);
                                Console.Write(Encoding.UTF8.GetString(sBuffer));
                            }
                        }
                        catch (Exception expt)
                        {
                            Console.Write(expt.Message);
                        }
                        client.Close();
                        listner.Close();
                }
                catch (Exception expt)
                {
                    Console.Write(expt.Message);
                }
                finally
                {
                    if (listner != null)
                    {
                        listner.Close();
                    }
                }
    Merci pour votre aide !

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    Si le protocole que tu implante est "personnel", implante un mécanisme de ping/pong. En réalité, lorsque tu envoie une donnée sur une socket, tu as une exception qui se déclenche si le client à l'autre bout à fermé sa socket ou si le lien est rompu. Il suffit de catcher cette exception pour savoir que le client s'est déconnecté de facon incongrue. Pour cela il suffit de lui envoyer quelque chose sur la socket, aussi implante un ping toutes les n secondes, meme s'il n'attend pas de réponse, ca permet de tester la validité de la ligne et de la socket. Si elle n'est plus valide tu la ferme et tu l'oublie

Discussions similaires

  1. client serveur comment ça marche
    Par Cluxor dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 2
    Dernier message: 15/03/2014, 21h27
  2. Echange des données client/serveur, comment procéder ?
    Par shark59 dans le forum Réseau et multijoueurs
    Réponses: 7
    Dernier message: 17/05/2011, 20h26
  3. Comment tester la communication Serveur/Client
    Par codon21 dans le forum VB.NET
    Réponses: 2
    Dernier message: 09/02/2010, 16h29
  4. Réponses: 7
    Dernier message: 29/05/2009, 20h47
  5. [Client/Serveur] Comment procéder pour une validation par le Serveur ?
    Par wizad dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 11/09/2008, 08h47

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