Multi-users avec les controles winsock

hurt14 Messages postés 33 Date d'inscription vendredi 2 janvier 2004 Statut Membre Dernière intervention 11 août 2006 - 21 févr. 2006 à 12:40
thebrainwasher Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 août 2007 - 25 févr. 2006 à 14:24
Salut,
j'ai un problème avec mon application de chat multi clients. Quand j'envoie un message depuis le server seulement un des deux clients
reçoit ce message et ensuite quand je déconnecte le deuxième client (celui qui reçoit les messages du server) le premier client reçoit les deux fois le message, je comprends pas.
En effet j'essaie de faire un loop (for) pour que le server envoie le message tappé à travers tous les winsock connectés.

Voici la création dynamique de mes objets winsock: (dans frmServer, la form principale)

------------------------------------------------------------------------------------------------------------------------------------
Private Sub wckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)

wckServer(Index).Close
wckServer(Index).Accept requestID
Load wckServer(Index + 1)
wckServer(Index + 1).Listen

'System
frmChat.btnSend.Enabled = True

'Layout
frmChat.Caption = "Connected as Server"
frmChat.txtChat.Text = frmChat.txtChat & "********************* Connected with Client *********************" & vbCrLf
frmChat.lblAwaiting.Visible = False

End Sub
------------------------------------------------------------------------------------------------------------------------------------

Et ce qui suit: la procédure lorque l'on clique sur le bouton SEND (envoyer le message), ceci ce trouve sur une autre Form que les winsocks ! se trouve sur frmChat

------------------------------------------------------------------------------------------------------------------------------------
Private Sub btnSend_Click()

Dim message As String
message = txtMessage.Text

'Add the message to the listbox
txtChat.Text = txtChat.Text & "Server says: " & message & vbCrLf

'Clear Textbox
txtMessage.Text = ""

'Send the message to the clients
Dim Index As Integer 'Index est la variable pour identifier les différents winsocks crées ou existant dans frmServer
Index = 0

For Index= 0 to nbClients 'nbClients et la variable de frmServer qui s'incrémente à chaque fois qu'une requête de connection est faite
frmServer.wckServer(Index).SendData message
Index = Index + 1
Next Index

End Sub
------------------------------------------------------------------------------------------------------------------------------------

Et ça ça ne marche pas... Pourrez-vous m'aider, merci.
Hurt 14

2 réponses

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
21 févr. 2006 à 19:03
0
thebrainwasher Messages postés 20 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 18 août 2007
25 févr. 2006 à 14:24
je
crois deja qu'il y a un probleme dans ces lignes, si tu a mis ca dans
ton code c'est normal, il ne faut pas que tu réincrémente la variable
Index puisque c'est deja une boucle For qui l'incrémente toute seule.



For Index= 0 to nbClients 'nbClients et la variable de frmServer qui s'incrémente à chaque fois qu'une requête de connection est faite
frmServer.wckServer(Index).SendData message
Index = Index + 1 ' !!!
Next Index



Ca ne vient peut etre pas que de là je ne connais pas tout ton probleme mais change deja cette ligne voila.
0