Tester si connection en client et serveur est active

Signaler
Messages postés
6
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
4 juin 2010
-
Messages postés
6
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
4 juin 2010
-
Bonjour,
Je débute en C# et je tente de savoir quelle commande je peux utiliser pour savoir si ma connexion entre mon client et mon serveur est active ou pas, afin de pouvoir agir en conséquence.

Merci d'avance

5 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Salut

Tu t'y connectes de quelle façon ? On peut avoir le bout de code correspondant à ta connexion ?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
6
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
4 juin 2010

J'essaie de me connecter avec un timer toute les x secondes si la connexion n'est pas déjà établie.
Dans le cas où la connexion entre le serveur et le client est active je voudrais qu'il n'exécute pas ce bloc de code.
Ce que je ne sais pas c'est qu'elle est la condition qui me permettrait de savoir si il est déjà connecté au serveur?

coté client:
        private void timer1_Tick(object sender, EventArgs e)
        {
            if () // ICI JE NE SAIS PAS QUOI UTILISER POUR TESTER MA CONNEXION.
            {
                try
                {
                    ushort port =  5555;
                    TcpClient ClientSocket = new TcpClient("127.0.0.1", port);
                    NetworkStream ns = ClientSocket.GetStream();
                    MessageBox.Show("Connexion établie");
                }
                catch
                {
                    MessageBox.Show("Connexion non établie");
                }
            }
        }


coté serveur:
        public void Ecoute()
        {
            try
            {
                ushort port  = 5555;
                IPAddress localAddr = IPAddress.Parse("127.0.0.1");
                TcpListener SocketEcoute = new TcpListener(localAddr, port);
                SocketEcoute.Start();
                Socket MySocket = SocketEcoute.AcceptSocket();
                MessageBox.Show("Connexion établie");
            }
            catch
            {
                MessageBox.Show("Erreur");
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Thread MyThread = new Thread(new ThreadStart(Ecoute));
            MyThread.Start();
        }
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
42
Il faut que tu gardes une référence à ton TcpClient. Celui-ci a une propriété Connected qui te renvoie un booléen.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
6
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
4 juin 2010

Merci pour ta réponse.

En cherchant, je suis tombé sur cette documentation: ici, mais apparemment je dois mal l'utiliser car ça ne marche pas chez moi.
Dans l'exemple il n'y a que le "get" mais si je ne met pas le "set" il me génère une erreur: "must declare a body because it is not marked abstract or extern"

public bool Connected
        {
            get;
            set;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
    
            if (!Connected==true)
            {
                try
                {
                    ushort port = 5555;
                    TcpClient ClientSocket = new TcpClient("127.0.0.1", port);
                    NetworkStream ns = ClientSocket.GetStream();
                    MessageBox.Show("Connexion établie");
                }
                catch
                {
                    MessageBox.Show("Connexion non établie");
                }
            }
        }
Messages postés
6
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
4 juin 2010

ps: Le problème c'est que ma condition est toujours juste.
Même si la connexion entre mon client et mon serveur est déjà active, il m'exécute mon bloc de code.
Ce que je veux c'est qu'il l'exécute si il n'y a pas de connexion entre mon client et mon serveur et qu'il ne l'exécute pas si il est déjà connecté avec.

merci d'avance