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

VB 6 et antérieur Discussion :

[VB6] Gérer correctement les connexions winsock


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut [VB6] Gérer correctement les connexions winsock
    Bonjour,
    Je n'arrive pas a déconnecter mon serveur pour qu'il soit en attente d'une nouvelle connexion.

    Voila le code :

    côté serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
     Winsock1.GetData strdata
     t = Split(strdata, "|")
    If t(0) = "deconexion" Then
    Winsock1.Close
    Winsock1.LocalPort = 8523
    Winsock1.Listen
    End If
    End Sub

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Ben !...
    Et le lien que je t'ai donné dans l'autre sujet ?
    il te permet aussi ce téléchargement, avec tout et tout ... non ?
    http://vbip.com/winsock/files/sendmail2.zip
    sous-routine Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    dans frmSendMail...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Dans ton lien il n'y a pas ce que ej cherche ou alors j'ai mal cherché! je ne vois pas!

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    après avoir "dézippé" :
    ce que tu cherches se trouve dans le code de :

    sous-routine Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    de : frmSendMail...
    fais comme lui et tout ira bien.
    Ajoutes-y au besoin une petire pause par utilisation de la fonction Timer.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Je t'assure j'ai dézipé et regarder la source du projet et j'ai pas réussi à voir le rapport avec mon problème dsl!

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bon !....
    Regarde alors ce que je trouve sur ce forum à propos de fermetures "propres" :
    Il est absolument nécessaire de fermer proprement la connexion Winsock. Toutefois, puisque nous sommes dans une application client/serveur et que le serveur ne nous appartient pas, c'est lui qui nous impose les règles de fermeture. La plupart du temps, une fois la requête du client satisfaite, la connexion rentre "en hibernation", dans laquelle elle reste pour une durée fixée par le serveur ( une dizaine de minute en général).

    Le problème, c'est qu'une connexion en hibernation n'est pas fermée, et si on essaie de se reconnecter une deuxième fois avec la même application, on aura une erreur "Opération Invalide dans l'État Courant", ce qui est logique puisque la connexion n'est pas fermée.

    De la même façon, une connexion Winsock utilise un port virtuel sur la machine (stockée, le temps de la connexion, dans la variable LocalPort). Et tant que la connexion n'est pas fermée, le port reste utilisé, ce qui signifie qu'il est impossible de le réutiliser pour une deuxième connexion.

    Par conséquent la manière la plus propre de fermer une connexion Winsock, et aussi surprenant que ça puisse paraître, est de le faire avant d'appeler la procédure de connexion:

    Winsock1.Close
    Winsock1.LocalPort = 0
    Winsock1.Connect hostname, 79

    Ce code est une mesure de sécurité à respecter absolument (sinon la connexion ne marchera qu'une seule fois et plantera à la deuxième, ce qui est assez embêtant).


    Est-ce bien le problème que tu rencontres ?
    Je crois également que la lecture de la totalité du cours qui contient cette observation n'est pas une perte de temps :


    http://grafikm.developpez.com/vbreseau/Lecon1/

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 26
    Points : 16
    Points
    16
    Par défaut
    Merci beaucoup !!!
    Allez ej vasi relire les cours et arrêter de poster inutilement

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/05/2013, 20h56
  2. [TabItem] Comment gérer correctement les RoutedMessages sur un overrided ?
    Par ikeas dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 02/10/2008, 14h28
  3. [Connection DB] Bien gérer les connexions !
    Par rad_hass dans le forum C#
    Réponses: 11
    Dernier message: 25/02/2008, 17h44
  4. [VB6]Gérer les espaces dans une command FTP
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 24/07/2006, 22h28

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