[Chat MultiConnections] Envoyer à tous?

Signaler
Messages postés
4
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
17 avril 2008
-
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
-
Bonjour!

Je développe un chat multiconnections comme IRC

Et j'aimerai savoir quand le serveur reçoit le message comment peut il l'envoyer à tous les autres index Winsock?

Ex:

Winsock1(0) est le serveur
Winsock1(1) est connecté
Winsock1(2) est connecté
Winsock1(3) est connecté

Comment faire pour que quand Winsock1(1) envoi un message sa l'envoi à Winsock1(2) et Winsock1(3)?

Merci!

7 réponses

Messages postés
51
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
2 octobre 2008

Bonjour,

Il serait plus pratique de faire passer le message pas Wisnock1(0) entre Winsock1(1) et Winsock1(2).
Ainsi Winsock1(0) pourra aussi l'envoyer à Winsock1(3).

DblK
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour

Ou sinon, avec un bête for :

For i= 1 to 3 'Voir pour les bornes par variable
    if I<>MsgSender Then 'MsgSender contient l'Index de l'emmeteur du message.
       'Envoyer
    end if
Next I

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
4
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
17 avril 2008

Bonjour NHenry!

Pourriez-vous m'envoyer une source de démo? Et m'aider ...

Que doit je mettre a "'Envoyer'" j'ai essayé Winsock1(I).SendData (Messages)

Mais cela m'envoi 3 fois le message :O

Merci !
Messages postés
4
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
17 avril 2008

Ah et j'oubliait sa ne m'envoie pas le message aux autres clients
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour

Peux-tu mettre tout le code de la boucle ?

Comment tu as déclarer "I" ?

For i= 1 to 3 'Voir pour les bornes par variable
    if I<>MsgSender Then 'MsgSender contient l'Index de l'emmeteur du message.
       'Envoyer
       DoEvents 'Oublié, indispensable pour envoyer.
    end if
Next I

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
4
Date d'inscription
dimanche 7 janvier 2007
Statut
Membre
Dernière intervention
17 avril 2008

Voila mon code :
' Declare Variables
Option Explicit
Public Online As Integer
Dim I As Integer

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
' Declare Variables
Dim Messages As String
' Get Message
Winsock1(Online).GetData Messages, vbString
LogArea.Text = LogArea.Text & Winsock1(0).RemoteHostIP & ": " & Messages & vbCrLf
' Test
For I = 1 To 1000
If I <> Online Then
Winsock1(Online).SendData (Messages)
DoEvents
End If
Next I
End Sub
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour

For I = 1 To 1000
    If I <> Online Then
        Winsock1(Online).SendData (Messages)
        DoEvents
    End If
Next I


Pourquoi 1000 ? Utilises plutot un compteur auto incrémenté lors de création des controles WinWock.
N'utilises pas OnLine, mais Index

Voici le code corrigé :

For I = 1 To 1000

    If I <> Index Then

        Winsock1(I).SendData (Messages)

        DoEvents

    End If

Next I



Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site