Guillamue06
Messages postés157Date d'inscriptiondimanche 18 avril 2004StatutMembreDernière intervention11 juillet 2022
-
4 août 2006 à 01:01
medelidrissi
Messages postés180Date d'inscriptionjeudi 21 août 2003StatutMembreDernière intervention26 novembre 2007
-
4 août 2006 à 13:38
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
medelidrissi
Messages postés180Date d'inscriptionjeudi 21 août 2003StatutMembreDernière intervention26 novembre 20072 4 août 2006 à 02:51
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.
Guillamue06
Messages postés157Date d'inscriptiondimanche 18 avril 2004StatutMembreDernière intervention11 juillet 20224 4 août 2006 à 12:36
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