Comment faire un chat multiuser!

LoRdKiFlEx Messages postés 24 Date d'inscription vendredi 30 août 2002 Statut Membre Dernière intervention 1 octobre 2004 - 6 nov. 2002 à 20:02
AraXeen Messages postés 36 Date d'inscription mardi 3 décembre 2002 Statut Membre Dernière intervention 24 juin 2004 - 19 déc. 2002 à 11:18
voila j'ai fais un chat mais il ne peut que communiquer a 2.Je voudrais donc savoir comment ce connecter a plusieur sur la partie serveur du chat.j'utilise tcp.donc si vous avez un petit script bien expliquer mettais le dans la reponse. :big)
(Mais je ne veut pas du blabla comme j'ai vu souvent et qui n'a aucun rapport avec la question posée) :approve)

je tiens a dire merci d'avance au nombreuse personnes qui vont me laisser un message.
A voir également:

7 réponses

ElDoktor Messages postés 22 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 7 décembre 2002
6 nov. 2002 à 21:05
Si tu utilises Winsock pour la connection, sur ta partie serveur il faut 2 control winsock. 1 pour detecter si quelqu'un veu se connecter (en mode listen), dans ce cas tu cree un nouveau crontrol winsock avec le deuxieme (Load Winsock2(i)), et tu effectue la connection de ton client avec ce nouveau control.
J'ai fait un OCX pour chat va voir les sources ca pourra peut etre t'aider....
http://www.vbfrance.com/article.aspx?Val=6242

-Dok
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
7 nov. 2002 à 01:08
non, 1 winsock suffit :)

la connection:

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intmax = intmax + 1
Load Winsock1(intmax)
Winsock1(intmax).LocalPort = 30002
Winsock1(intmax).Accept requestID
endif

La reception de donnée:

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim tmp As String

Winsock1(Index).GetData tmp
If IsServeur Then
For I = 1 To intmax
If Winsock1(I).State = sckConnected Then
Winsock1(I).SendData tmp
End If
Next
else
'Gestion de ce qu'il se passe chez le client
End If

apres, a toi de gerer la deconnexion, les erreurs....
0
LoRdKiFlEx Messages postés 24 Date d'inscription vendredi 30 août 2002 Statut Membre Dernière intervention 1 octobre 2004
7 nov. 2002 à 19:32
voila le code source du serveur que j'ai fait. le prob c que quand j'envois un message au client(j'en est pris que un pour l'instant)il y a un bug dexecution 4006.je pense que c dans la partie ok_click mais je ne suis pas sur pouvais vous me dire ce qui ne va pas.(merci a BasicInstinct de m'avoir aidé)

Private intMax As Long
Private Sub form_load()
intMax = 0
Winsock(0).Close
Winsock(0).LocalPort = Form1.Text2.Text
Winsock(0).Listen
End Sub

Private Sub ok_Click()
crlf = Chr$(13) + Chr$(10)
Winsock(Index).SendData crlf & "<" & Form1.Text1.Text & ">" & Text1.Text
RichTextBox1.SelText = crlf & "<" & Form1.Text1.Text & ">" & Text1.Text
Text1.Text = ""
End Sub
Private Sub winsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load Winsock(intMax)
Winsock(intMax).LocalPort = 30002
Winsock(intMax).Accept requestID
End If
End Sub
Private Sub winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim data As String
'Winsock(Index).GetData data
Winsock(Index).GetData data
If IsServeur Then 'peut tu m'expliquer a quoi sert cette condition stp
For I = 1 To intMax
If Winsock(I).State = sckConnected Then
Winsock(I).SendData data
End If
Next
Else
'Gestion de ce qu'il se passe chez le client
End If
RichTextBox1.SelText = data
End Sub

Private Sub quitter_Click()
End
End Sub
Private Sub form_unload(cancel As Integer)
Unload Form1
Unload Me
End Sub

merci a tous ceux qui reponde
0
MysTiK74 Messages postés 32 Date d'inscription vendredi 23 août 2002 Statut Membre Dernière intervention 7 mars 2003
7 nov. 2002 à 20:55
Adieu p'tit

j'y conné pas grand chose en winsock mais à mon avis dans ta fonction ok_click Index = null

A r'vi pa...

Partager ce qu'on sait c'est laisser une trace de notre passage...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
7 nov. 2002 à 23:37
dans ok_click()
remplace
Winsock(Index).SendData crlf & "<" & Form1.Text1.Text & ">" & Text1.Text
par
Winsock(IntMax).SendData crlf & "<" & Form1.Text1.Text & ">" & Text1.Text

IsServeur me permet de gerer le client et le serveur sur la meme appli avec 1 seul winsock
le serveur renvoie a tous les clients les données qu'il recoit (en general du moins)

plutot que de faire une boucle de I à Intmax,
il faut créer un tableau de client (avec gestion des connection, deconnection, plantage) et juste boucler sur le nombre de client connecté
par exemple tu peut mettre dans ton tableau:
Pseudo
IP
NumeroWinsock
HeureDeConnection
HeureDeDernierMessage
Droits (admin, user, coAdmin.....)
.....
0
AraXeen Messages postés 36 Date d'inscription mardi 3 décembre 2002 Statut Membre Dernière intervention 24 juin 2004
5 déc. 2002 à 13:59
AraXeen

j'ai laisser une source sur le site
0
AraXeen Messages postés 36 Date d'inscription mardi 3 décembre 2002 Statut Membre Dernière intervention 24 juin 2004
19 déc. 2002 à 11:18
Peut-être
Winsock(0).LocalPort = Form1.Text2.Text
remplacé par
Winsock(0).LocalPort = Val(Form1.Text2.Text)

AraXeen
0
Rejoignez-nous