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

Windows Forms Discussion :

Détection de perte de connexion ssl et redémarrage de celle-ci


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Points : 43
    Points
    43
    Par défaut Détection de perte de connexion ssl et redémarrage de celle-ci
    Bonjour, je réalise présentement un petit formulaire c# .NET qui se connecte sur un serveur via un sslStream et à un interval de temps donné reçoit et envoie des données.

    Le problème est le suivant : si je débranche mon fil réseau (coupe la connexion), j'aimerais que mon programme le détecte et tente une reconnexion au serveur (en boucle jusqu'à ce qu'il réussisse). J'ai essayé quelques façons qui se sont toutes avérées peu fructueuses. Voici quelques bouts de code de ce que j'ai essayé :

    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
    if (client.Connected) //J'ai aussi essayé avec if(sslStream.CanWrite)
                {
                    // Envoie du message 
                    sslStream.Write(messsage);
                    sslStream.Flush();
                }
                else
                {
                    bool OK;
                    do
                    {
                        //Tentative de reconnexion
                        OK = RunClient();                    
                    } while (!OK);
                }
    Cependant, lorsque je coupe la connexion, le programme continue à envoyer des messages pendant 1-2 minutes avant de s'apercevoir que la connexion a été coupée (pourtant j'ai mis le WriteTimeout à 1000 ms), ensuite il capte une exception et ferme. Après, lorsque je le réouvre, il ne veut simplement plus se reconnecter.

    - Pourquoi le "client.Connected" ou "sslStream.CanWrite" ne retournent-t-ils pas "false" quand la connexion est perdue?

    - Pourquoi est-ce aussi long avant que le programme lance une exception?

    De l'aide serait grandement appréciée afin de résoudre mon problème Merci !

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Quel est le moyen de transport du SSL ?
    Si c'est du HTTP, c'est en vain d'essayer, il n'est pas fait pour ca!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Non ce n'est pas en HTTP, c'est un TCPClient qui envoie des sockets. Pour se connecter je dois joindre un certificat d'authentification. Je peux joindre le code de connexion au serveur pour que ce soit plus clair :

    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
    string[] args = Environment.GetCommandLineArgs();
     
                // Create a TCP/IP client socket.
                client = new TcpClient(args[1], Convert.ToInt32(args[2]));
     
                // Create an SSL stream that will close the client's stream.
                sslStream = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate),null);
     
                // Gets the certificate for the authenticate function            
                X509CertificateCollection certs = new X509CertificateCollection();
     
                try
                {
                    X509Certificate cert = X509Certificate.CreateFromCertFile("Poste.cer");
                    certs.Add(cert);
                }
                catch (Exception)
     
               ....
     
                // The server name must match the name on the server certificate.
                try
                {
                    int timeout = 1000; 
                    sslStream.ReadTimeout = timeout;                
                    sslStream.AuthenticateAsClient(args[1], certs, SslProtocols.Tls, false);
                }
     
                ....
    Merci encore !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Points : 43
    Points
    43
    Par défaut
    Finalement j'ai ajouté des try...catch un peu partout pour capter les erreurs de connexions (System.IOException...) et ensuite tenter des reconnexions et ça a fonctionné !

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

Discussions similaires

  1. Personnaliser la détection de perte de connexion
    Par reitsab dans le forum WinDev
    Réponses: 4
    Dernier message: 28/09/2010, 09h31
  2. Détection perte de connexion
    Par looping dans le forum Débuter
    Réponses: 8
    Dernier message: 14/12/2008, 14h01
  3. Socket et détection d'une perte de connexion
    Par Tigrounette dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 27/09/2007, 19h36
  4. Perte de connexion BD
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 30/10/2003, 10h23
  5. Perte de connexion (bis)
    Par rgarnier dans le forum XMLRAD
    Réponses: 7
    Dernier message: 28/05/2003, 11h14

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