Un programme de chat

Description

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...

Codes Sources

A voir également

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.