LoRdKiFlEx
Messages postés24Date d'inscriptionvendredi 30 août 2002StatutMembreDernière intervention 1 octobre 2004
-
6 nov. 2002 à 20:02
AraXeen
Messages postés36Date d'inscriptionmardi 3 décembre 2002StatutMembreDernière intervention24 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.
ElDoktor
Messages postés22Date d'inscriptionsamedi 2 novembre 2002StatutMembreDerniè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
BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 201412 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....
LoRdKiFlEx
Messages postés24Date d'inscriptionvendredi 30 août 2002StatutMembreDerniè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
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.....)
.....