Winsock- Reconnect après Close

Résolu
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 - 11 déc. 2005 à 14:40
cs_ReyVal Messages postés 2 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 21 juin 2007 - 21 juin 2007 à 10:10
Bonjour !



Voilà mon problème :

J'ai une appli client/serveur. Lorsque mon serveur se déco, je voudrai
me reconnecter automatiquement. Quand mon serveur se déco, la fonction
Close est automatiquement appellée (sans passer par la fonction Error).
Le problème c'est que quand je refait une tentative de connexion (dans
la fonction Close), il me met un message d'erreur comme quoi que
l'action n'est pas possible à ce stade.



En gros voilà schématiquement mon code :



Private Sub Winsock_Close(Index As Integer)

If Winsock(Index).State = 8 Then

Winsock(Index).Connect "???.???.???.???", ...

End If

End Sub



Quelqu'un aurait-il une proposition ?



Merci d'avance

..::DuKe::..

4 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 déc. 2005 à 20:52
peut être une p'tite boucle d'attente

closing n'est pas encore closed







Do Until Winsock.State = 0

Winsock.Close

DoEvents

Loop


Daniel
3
XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
12 déc. 2005 à 10:07
Aïe ! Oui en effet j'ai fait un amalgamme entre l'instruction Close et la fonction Close...

..::DuKe::..
0
cs_ReyVal Messages postés 2 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 21 juin 2007
21 juin 2007 à 09:49
Et Oui, j'ai le meme pb. En faite lorsque l'on ferme la connection via
Winsock.close, le port destination ce ferme bien mais le port local
reception reste toujours en TIME_WAIT (visible via la commande DOS
NETSTAT) et empeche les connections suivante pendant un temps d'environ
10min. Donc pour se reconnecter, il suffit de choisir un port local
different (par exemple portLocal = PortLocal+1).


Actuellement, je cherche une routine DLL qui permettrait de determiner quel sont les ports qui sont en Time_Wait


Valery
0
cs_ReyVal Messages postés 2 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 21 juin 2007
21 juin 2007 à 10:10
Pour revenir sur le pb, Il suffit de positionner winsock.localport = 0
avant tout etablissement de connexion, ainsi il determine le portlocal
a fixer de facon automatique.


Valery
0
Rejoignez-nous