Anomalie Deconnexion Winsock

Bioacide Messages postés 58 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 20 septembre 2004 - 7 sept. 2004 à 02:21
Bioacide Messages postés 58 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 20 septembre 2004 - 9 sept. 2004 à 03:21
Je développe actuellement une application Client – Serveur en utilisant winsock en multi-connexion. Ainsi tous les serveurs se connectent au client sur le port 30000 et sont listés dans un listview . A savoir qu’une colonne contient le numero de l’index de connexion .

Mon projet comporte 2 composants winsock . le premier sert d’accueil et se nome socket1 et mon second ( winsock1 ) est là pour assurer la multi connexion sur le port 30000 .

Voici le code du socket 1
---------------
Private Sub Socket1_ConnectionRequest(ByVal requestID As Long)
On Error GoTo fin
nb = nb + 1
Load Winsock1(nb)
Winsock1(nb).Close
Winsock1(nb).Accept requestID
fin:
End Sub
***************

Winsock1 gère 3 événements : Close , Error et DataArrival

---------------
Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

On Error Resume Next
Call Winsock1_Close(Index)
End Sub
**********

Le code Winsock1_Close ressemble à ca

---------------------
Private Sub Winsock1_Close(Index As Integer)

On Error Resume Next
Winsock1(Index).Close
Unload Winsock1(Index)
DoEvents

For z = 1 To ListView.ListItems.Count
If ListView.ListItems.Item(z).ListSubItems(1) = Index Then
For_Listener.ListView.ListItems.Remove (z)
Exit for
End If
Next z

If For_Listener.ListView.ListItems.Count = 0 Then
nb = 0
End If
DoEvents
Exit Sub
End If

End sub
************

Donc mon problème le voici :
_ lors d’une déconnexion d’un des serveurs très étrangement je constate avec un outil comme « Port Explorer » que la connexion semble considérée comme étant toujours active alors que le serveur est clairement plus dans les processus

Le serveur reste listé dans le listview . C’est en tentant de lui envoyer des datas qu' au bout d’un moment l’événement winsock1_Error se lance .

Donc je m’interroge est ce que c’est pas un bug de winsock lors de l’utilisation en multiconnexion qui laisse croire au système qu’il y a toujours une connexion malgre que le sock soit Close + unload .

Merci pour votre attention

2 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
7 sept. 2004 à 07:59
Check Winsock.State et tu sera fixé
du plus ta fonction Socket1_ConnectionRequest est buggé
elle charqge un nouveau control a chaque fois sans tenir
compte de Winsock.Count

@+

E.B.
0
Bioacide Messages postés 58 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 20 septembre 2004
9 sept. 2004 à 03:21
Je m permets de revenir Dessus car j'ai pris de temps de tester à nouveau divers solution toujours sans succès .

Dès le départ j'ai mis un controle Winsock1(index).State afin de connnaitre l'etat de la connexion . Donc je confirme malgré un desconnexion du serveur , Winsock1(index).Stat n'indique 7 c'est a dire connecté , Port explorer n'indique aussi que le servuer est connecté ( celui ci ne fait que renvoyé l'etat winsock )

@ E.B : Je ne voie pas en quoi la fonction est buggée . Tu proposes quoi comme code alternatif .

Merci
0
Rejoignez-nous