Voila, y a 2 solutions, un client et un serveur. Ils utilisent tout les deux une petite dll que j'ai fait. Je vous met seulement le code du serveur, le client est dans le Zip... On peut également chater en utilisant Telnet...
Pour utiliser le code ci dossour créez une fenêtre qui s'appèle Form1 avec un bouton Button1 et un Text Box nommé TextBox1.
Le Text Box permet de saisir le port sur lequel il faut écouter et le bouton permet d'activer le serveur.
Source / Exemple :
Public Class Form1
Inherits System.Windows.Forms.Form
' On créé un objet serveur
Dim WithEvents Serveur As New TcpLibrary.TcpServer()
#Region " Windows Form Designer generated code "
' J'ai enlevé le code généré automatiquement
#End Region
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' On met le port indiqué dans TextBox1
Serveur.Port(TextBox1.Text)
' Et on écoute sur le port
Serveur.StartListen()
End Sub
' Le client connecté est passé en argument (Client)
Private Sub Serveur_Connected(ByVal Client As TcpLibrary.TcpSocket) Handles Serveur.Connected
' Quand un client s'est connecté on lui demande son pseudo
' Tout les envois doivent se terminer par vbNewLine (retour à la ligne)
Client.SendData("Bienvenue, veuillez entrer votre Pseudo" & vbNewLine)
End Sub
' Le client qui vient d'envoyer les données est passé en argument (Client)
Private Sub Serveur_DataArrival(ByVal Client As TcpLibrary.TcpSocket, ByVal Available As Long) Handles Serveur.DataArrival
' On regarde si une ligne se terminant par vbNewLine n'est pas disponible, si oui on la stocke dans Tampon
Dim Tampon As String = Client.GetLine()
Do While Tampon <> ""
' Tant qu'il y en a on les traite
Traite(Tampon, Client)
Tampon = Client.GetLine()
Loop
End Sub
' Traite les données qui viennent d'arriver
Public Sub Traite(ByVal Data As String, ByVal Client As TcpLibrary.TcpSocket)
' La propriété Tag du Client sert à stocker ce que l'on veut, ici on s'en sert pour stocker le pseudo de chaque client
' Si l'utilisateur n'a pas de pseudo on lui met celui qu'il vient d'envoyer
If Client.Tag = "" Then
' On enlève le retour à la ligne et on stocke dans Tag
Client.Tag = Microsoft.VisualBasic.Left(Data, Len(Data) - 2)
Client.SendData("Votre pseudo est maintenant " & Data)
SendAtAll(Client.Tag & " est connecté" & vbNewLine)
' Si l'utilisateur a un pseudo on envoie son message à tous
Else
SendAtAll("<" & Client.Tag & "> " & Data)
End If
End Sub
' Envoie un message Data a tout les clients connectés
Public Sub SendAtAll(ByVal Data As String)
Dim Client As TcpLibrary.TcpSocket
' La propriété Clients du serveur est une collection qui contient tout les clients connectés
' Avec For Each, on a donc acces à tout les clients connectés
For Each Client In Serveur.Clients
Client.SendData(Data)
Next
End Sub
' On choisit si on veut une nouvelle connection en changant la valeur de Accept
Private Sub Serveur_Request(ByRef Accept As Boolean) Handles Serveur.Request
' Si il y a déjà 4 client connectés on refuse la nouvelle connection
If Serveur.Clients.Count > 4 Then
Accept = False
End If
End Sub
' Le client qui vient de se déconnecter est passé en argument (Client)
Private Sub Serveur_Disconnected(ByVal Client As TcpLibrary.TcpSocket) Handles Serveur.Disconnected
' On indique à tout le monde qu'il s'est déconnecté
SendAtAll(Client.Tag & " a quitté le chat" & vbNewLine)
End Sub
End Class
Conclusion :
Voila c'est vraiement un chat de base juste pour que tout le monde comprenne, apres vous pouvez l'améliorer...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.