Bonjour à tous,

J'ai un petit souci avec l'utilisation du Winsock en VB6,

Avant tout, une petite présentation pour ceux qui veulent, ou arrive à me lire au vu de mon orthographe un peu...chaotique. D'ailleurs je ne prend pas mal les remarques à ce sujet si elles sont constructives, afin d’éviter de les refaires.

----------------------------------------------------
J'ai une application qui fait du Telnet et du FTP.
A l'origine elle n'avait qu'une seule méthode ou elle faisait du Telnet, FTP puis Telnet, c'etait toujours la même chose. Le but étant d'envoyer tous nos logiciels et configurations sur un petit serveur, DIGI9210 pour ceux qui connaissent.

Mais notre serveur (sur lequel je me connecte) devenant de plus en plus complexe, avec des fonctions avancé comme le SSL etc.. Mon logiciel pour envoyer tout cela devenait une usine à gaz pour les utilisateurs lambda et le client avec pleins d'options possible.

J'ai décidé de faire une partie admin avec toutes les options et 2 parties client et utilisateur, avec un mode local et un mode distant.
Le mode Local permet de flasher le serveur en .....local, sur table (une entrée est activée sur le serveur DIGI afin que nos logiciels ne démarre pas le temps du flash)
Le mode Distant permet de flasher le serveur en lui envoyer une commande pour le redémarrer en mode flash (avec les adresse IP qui vont bien, mais sans démarrer nos logiciels).

Voila pour les presentations
----------------------------------------------------

Mon souci:

Aillant 3 formulaires indépendant, je n'est pas souhaitez utiliser le winsock présent dans les formulaires, mais je suis parti pour intégré Winsock dans une classe qui gère la connexion à Telnet.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Private WithEvents SockTELNET As Winsock

Tout se passe bien sauf si je clôture la classe de gestion de Telnet en aillant pourtant, il me semble, bien fermer le Socket au préalable.
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
 
 
Private Sub Class_Terminate()
 
    If Not SockTELNET Is Nothing Then
        With SockTELNET
            .Close
            Do
                DoEvents
                If .State = 0 Then
                    Exit Do
                End If
            Loop
            .RemotePort = 0
            .LocalPort = 0
        End With
       Set SockTELNET = Nothing
    End If
End Sub
Mon souci je pense proviens du Set SockTELNET = Nothing, car si je relance immédiatement un nouveau flash, je plante sur l'instanciation du Socket.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
If SockTELNET Is Nothing Then Set SockTELNET = New Winsock
Lors du passage sur Set SockTELNET = New Winsock une 2eme fois il plante.

J'attend un peu et cela re-fonctionne, mais je ne pense pas que cela viens du serveur, car avec l'invite de commande de windows, je peux sans souci ouvrir plusieurs session Telnet et l'ouvrir immédiatement après la fermeture.


Dans l'immédiat dans mes phases de transition entre Telnet et FTP puis Telnet, je ferme le Socket sans le détruire et cela fonctionne à la réouverture (pas de Set SockTELNET = New Winsock, au 2eme passage), mais si je ferme l'application pour le relancer aussitôt il plante.


Si vous avez une idées ?? Merci


[EDIT] Je viens de remarqué une chose, je suis en debug, mais si j’arrête l'EDI pour le rouvrir aussitôt, et lance le logiciel, ma connexion se fait immédiatement. Si cela peut aider. Je n'avais pas cela quand j'utilisais qu'un seul formulaire et donc le Winsock de la Form.