Winsock Multi Connexion

[Résolu]
Signaler
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
-
Messages postés
180
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
26 novembre 2007
-
Bonjour , je suis encore avec mon winsock

Alors voila j'en suis rendu ou que le server accepte un nombre limité de connexion.

Mais le probleme c'est que seul le dernier connecté peut envoyer des données.
Les autres connecté Erreur.... quand t'il éssey d'envoyer une donnée

Voici la source du server :




Private Sub Form_Load()
Winsock1.LocalPort = 52
Winsock1.Listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock2.Close
Winsock2.Accept requestID
End Sub

Private Sub Winsock1_Error(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)
MsgBox "Win 1 server erreur"
End Sub

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim recu As String
Winsock2.GetData recu
Text1.Text = Text1.Text & vbCrLf & recu

End Sub

Private Sub Winsock2_Error(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)
MsgBox "Win 2 server erreur"
End Sub

Voici la source du clien : 

Private Sub Command1_Click()
Winsock1.SendData (Text1.Text)
End Sub

Private Sub Form_Load()
Winsock1.Connect "127.0.0.1", 52
End Sub

Private Sub Winsock1_Error(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)
MsgBox "erreur"
End Sub

4 réponses

Messages postés
180
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
26 novembre 2007
2
Salut.

J'ai pris le soin de te créer un simple exemple :
http://elidrissi.free.fr/public/Guillamue06.zip

Pour se connecter, tu peux utiliser la routine normale.

Bonne programmation.

Cordialement medelidrissi

<hr />En Informatique, rien n'est impossible. mais, ce n'est pas toujours évident.
Messages postés
180
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
26 novembre 2007
2
Bonjour,

Ce que tu fais est bon, mais il ne te permet pas d'avoir plus d'une connexion, alors il vaut mieux avec ton code d'utiliser un seul winsok.


Cependant, pour avoir plusieurs connexions au même port, tu peux utiliser ta méthode, mais avec des collections d'objets, pour ne pas trop traîner, je te donne une source très instructive :
http://www.vbfrance.com/code.aspx?ID=22560plus précisément ce bout de code dans frmServer
Private Sub sck_ConnectionRequest(ByVal requestID As Long)
    Dim c As frmServerX
    Dim i As Long
    For i = 1 To mClients.Count
        If (mClients(i).sck.state = sckClosed) Then
            mClients(i).sck.Accept requestID
            Exit Sub
        End If
    Next
    If (mClients.Count >= SERVER_MAXCNX) Then Exit Sub
    Set c = New frmServerX
    c.sck.Accept requestID
    mClients.Add c
End Sub

Je te laisse découvrir cette source, si jamais tu ne comprends tjrs pas comment procéder, n'hésite pas à demander.


Bonne programmation.


Cordialement medelidrissi


<hr />

En Informatique, rien n'est impossible. mais, ce n'est pas toujours évident.
Messages postés
282
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
15 août 2012
2
salut

il existe un excellent tutoriel sur comment creer un winsock multiconnexion.
Messages postés
157
Date d'inscription
dimanche 18 avril 2004
Statut
Membre
Dernière intervention
25 juillet 2018
4
Bonjour , merci pour vos réponce.

Je ne pence pas que j'ai besoin d'une source pour comprendre car déja il y a beaucoup de balise que je ne c'est pas se qu'elle veulent dire.

Je pence que j'ai besoin que l'on me dise comment je doit procéder pas a pas et la je pourai codé avec mes mots.





medelidrissi tu me dit que je peut utiliser un seul winsock.

Se que je ne comprend pas c'est que dans

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

Je suis obligé (enfin je n'arrive pas a faire otrement) de fermé winsock et d'accepté la connexion.
Ensuite j'ai ésseyer de remetre winsock en écoute mais cela ne fonctionne pas.

Des personnes mon dit qu'il faut que j'utilise 2 winsock.

Un winsock qui reste toujour en écoute et l'otre qui accepte les connexion

Mais comme je vien de dire je suis obligé de fermé un winsock pour accepté la connexion imposible ensuite de le remétre en écoute.

Si une personne pouré m'expliqué pas a pas comment faire sa seré gentil de votre par merci