IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

ChatBox en réseau


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut ChatBox en réseau
    Bonsoir,

    Voila mon code :

    COTER CLIENT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    Imports System.Net.Sockets
    Imports System.IO
     
    Public Class ChatNgX
     
        Private EcouteAll As NetworkStream
        Private EcouteEcrit As StreamWriter
        Private Ecoutelist As StreamReader
        Private Client As New TcpClient
        Private EtatLecture As New Threading.Thread(AddressOf Listen)
        Private Delegate Sub DAddItem(ByVal s As String)
        Private Pseudo As String
     
        Dim Evenement As Boolean = False
        Dim AdresseIP As String
        Dim ConfirmIP As Boolean = False
        Dim ConfirmPseudo As Boolean = False
     
        Dim MsgBoxIP
        Dim MsgBoxPseudo
     
        Private Sub AddItem(ByVal s As String)
     
            ListChat.Items.Add(s)
            ListChat.SelectedIndex = ListChat.Items.Count - 1
            ListChat.ClearSelected()
     
        End Sub
     
        Private Sub ChatNgX_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
     
            BtnEnvoyer.Enabled = False
     
            If (Evenement = True) Then
     
                Try
                    Client.Connect(AdresseIP, 8000)
                    If Client.Connected Then
                        EcouteAll = Client.GetStream
                        EcouteEcrit = New StreamWriter(EcouteAll)
                        Ecoutelist = New StreamReader(EcouteAll)
     
                        EcouteEcrit.WriteLine(Pseudo)
                        EcouteEcrit.Flush()
     
                        EtatLecture.Start()
                    Else
                        MsgBox("Le serveur n'est pas lancé !", MsgBoxStyle.Exclamation, "Aucun Serveur trouvé")
                        Application.Exit()
                    End If
                Catch ex As Exception
                    MsgBox("Le serveur n'est pas lancé !", MsgBoxStyle.Exclamation, "Aucun Serveur trouvé")
                    Application.Exit()
                End Try
     
            End If
     
        End Sub
     
        Private Sub Listen()
     
            If (Evenement = True) Then
     
                While Client.Connected
                    Try
                        Me.Invoke(New DAddItem(AddressOf AddItem), Ecoutelist.ReadLine)
                    Catch
                        MsgBox("Le serveur n'est pas lancé !", MsgBoxStyle.Exclamation, "Aucun Serveur trouvé")
                        Application.Exit()
                    End Try
                End While
     
            End If
     
        End Sub
     
        Private Sub BtnEnvoyer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEnvoyer.Click
     
            EcouteEcrit.WriteLine(Txtchat.Text)
            EcouteEcrit.Flush()
            Txtchat.Clear()
     
        End Sub
     
        Private Sub ChatNgX(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosed
            End
            Application.Exit()
        End Sub
     
        Private Sub ChatNgX_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            While ConfirmIP = False
                AdresseIP = InputBox("Adresse du Serveur : ", "Connexion au Serveur")
     
                If (AdresseIP = "") Then
                    MsgBoxIP = MsgBox("Vous n'avez pas entré d'Adresse IP !", MsgBoxStyle.RetryCancel, "Aucune Adresse IP")
                    Evenement = False
                Else
                    Evenement = True
                    ConfirmIP = True
                End If
     
                If (MsgBoxIP = MsgBoxResult.Cancel) Then
                    Application.Exit()
                End If
     
            End While
     
     
            While ConfirmPseudo = False
                Pseudo = InputBox("Entrer votre Pseudo : ", "Choisir un pseudo")
     
                If (Pseudo = "") Then
                    MsgBoxPseudo = MsgBox("Vous n'avez pas entré de Pseudo !", MsgBoxStyle.Information, "Aucun Pseudo")
                    Evenement = False
                Else
                    Evenement = True
                    ConfirmPseudo = True
                End If
     
                If (MsgBoxPseudo = MsgBoxResult.Cancel) Then
                    Application.Exit()
                End If
            End While
     
     
        End Sub
     
        Private Sub BtnQuitter_Click(sender As Object, e As EventArgs) Handles BtnQuitter.Click
            End
        End Sub
     
        Private Sub BtnCouleur_Click(sender As Object, e As EventArgs) Handles BtnCouleur.Click
     
                ColorDialog1.ShowDialog()
                Txtchat.ForeColor = ColorDialog1.Color
     
        End Sub
     
        Private Sub Txtchat_TextChanged(sender As Object, e As EventArgs) Handles Txtchat.TextChanged
     
            If (Txtchat.Text <> "") Then
                BtnEnvoyer.Enabled = True
     
            Else
                BtnEnvoyer.Enabled = False
            End If
     
        End Sub
    End Class
    COTER SERVER (console) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    Imports System.Net.Sockets
    Imports System.IO
    Imports System.Net
     
    Module Module1
        Private server As TcpListener
        Private client As New TcpClient
        Private ipendpoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 8000)
        Private list As New List(Of Connection)
     
        Private Structure Connection
            Dim stream As NetworkStream
            Dim streamw As StreamWriter
            Dim streamr As StreamReader
            Dim nick As String
        End Structure
     
        Sub Main()
            Console.WriteLine("Serveur OK!")
    	Console.writeline("SERVER")
            server = New TcpListener(ipendpoint)
            server.Start()
     
            While True
                client = server.AcceptTcpClient
     
                Dim c As New Connection
                c.stream = client.GetStream
                c.streamr = New StreamReader(c.stream)
                c.streamw = New StreamWriter(c.stream)
     
                c.nick = c.streamr.ReadLine
     
                list.Add(c)
                Console.WriteLine(c.nick & " s'est connecté.")
     
                Dim t As New Threading.Thread(AddressOf ListenToConnection)
                t.Start(c)
            End While
        End Sub
     
        Private Sub ListenToConnection(ByVal con As Connection)
            Do
                Try
                    Dim tmp As String = con.streamr.ReadLine
                    Console.WriteLine(con.nick & ": " & tmp)
                    For Each c As Connection In list
                        Try
                            c.streamw.WriteLine(con.nick & ": " & tmp)
                            c.streamw.Flush()
                        Catch
                        End Try
                    Next
                Catch
                    list.Remove(con)
                    Console.WriteLine(con.nick & " s'est déconnecté.")
                    Exit Do
                End Try
            Loop
        End Sub
    End Module

    Ce que je voudrais faire c'est creer une sorte de ListBox et a l'interieur je met tout les gens connecter a mon server.

    Seul souci, c'est que je ne sais pas comment faire pour que mon code de mon Client communique avec celui de mon server sans avoir des probleme de variable.

    Ce que je veux dire par la c'est que sur mon server j'ai la list des connectés, avec le con.nick etc mais je voudrais avoir la même chose du coté client.

    En gros faire un imports server.exe

    Une idée ?

    EDIT : Car je voudrais recupérer chaque personne connecter, pour avoir une liste de pseudo a droite de mon client.
    Ou carement avoir une couleur différente pour chacune des personnes co !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 104
    Points : 206
    Points
    206
    Par défaut
    Tu devrais regarder du côté du Remoting avec partage de classe.
    On trouve des exemples sur le Net.

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par mdevaux62 Voir le message
    Tu devrais regarder du côté du Remoting avec partage de classe.
    On trouve des exemples sur le Net.
    WCF existe depuis plus de 5 ans. Il n'y a plus aucune raison d'utiliser le Remoting actuellement; le Remoting n'est conservé que pour la compatibilité avec des applications écrites en 1.1 et 2.0. (et encore sans le Fx3.0 pour ces dernières).

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 46
    Points
    46
    Par défaut
    up

  5. #5
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Bluedeep t'a donné la réponse.

    Un serviceWeb WCF.

    Il y a un outil fort sympathique sur le forum, la RECHERCHE

    http://badger.developpez.com/tutorie...atez-avec-WCF/


    PS: Si tu avais cherché au lieu d'attendre une réponse entre le 19 et le 21 novembre tu aurait probablement terminé ton appli

  6. #6
    Membre averti Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Points : 355
    Points
    355
    Par défaut
    Juste comme ca,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     Catch
                    list.Remove(con)
                    Console.WriteLine(con.nick & " s'est déconnecté.")
                    Exit Do
                End Try
    C'est une exception qui gère la déconnexion d'un utilisateur?

    Si oui, je sais pas trop quoi dire à part que tu devrais peut-être revoir ca, ou suivre un tuto sur le développement.

    Je vais te donner un hint : programmation évenementielle

    Bonne chance, have fun

Discussions similaires

  1. [Réseau] Créer une connexion Internet
    Par Tranber dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 17/10/2002, 18h01
  2. Réseau Win/Linux
    Par ben91 dans le forum Développement
    Réponses: 2
    Dernier message: 08/09/2002, 23h59
  3. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 15h01
  4. Redimensionnement des Paquets IP sur un Réseau Local
    Par Bonoboo dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 16h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo