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 :

Thread pour messagerie LAN


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Points : 81
    Points
    81
    Par défaut Thread pour messagerie LAN
    bonjour à tous je travaille sur vb 2008 avec une BD MySql je suis entrain de créé une application de messagerie LAN mon problème c'est que je ne peux faire de chat avec plus qu'un seul client à la fois biennsure j'ai créé une table dans ma BD qui contient les adresses IP des postes qui ont installé l'application.
    voilà le code :

    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
    Dim Listener As New TcpListener(IPAddress.Any, 65535)
    Dim Client As New TcpClient
     
    Private Sub btn_Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Send.Click
            req = "select nom_util from personnel,poste where personnel.id_p=poste.id_p and poste.IP='" & GetIPAddress() & "'"
            pfl = New MySqlCommand(req, conn)
            pfl.ExecuteScalar()
            If RBx_envoie.Text = "" Then
                MessageBox.Show("Le texte d'envoie est vide", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
            Else
                Try
     
                    Client = New TcpClient(ipclt, 65535)
                    Dim Writer As New StreamWriter(Client.GetStream())
                    Writer.Write((RBx_envoie.Text))
                    Writer.Flush()
     
                    ' le pfl c'est un MySqlCommand pour avoir le pseudo que celui qui envoie le message
                    'le RBx_recu et RBx_envoie sont des RichTextBox
     
                    RBx_recu.Text += vbCrLf + pfl.ExecuteScalar() + " dit : " + vbCrLf + RBx_envoie.Text
                    RBx_envoie.Text = ""
     
                Catch ex As Exception
                    FrmMsgHLigne.Text = "Message hors ligne : " + User
                    FrmMsgHLigne.Show()
                End Try
     
            End If
        End Sub
     
    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
     
            Dim ListThread As New Thread(New ThreadStart(AddressOf Listening))
            ListThread.Start()
        End Sub
     
    Public Sub Listening()
            Listener.Start()
        End Sub
     
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Try
                If Listener.Pending = True Then
                    Me.Show()
                    Message = ""
                    Client = Listener.AcceptTcpClient()
                    Dim Reader As New StreamReader(Client.GetStream())
                    While Reader.Peek > -1
                        Message = Message + Convert.ToChar(Reader.Read()).ToString
                    End While
                    ' User c'est le client que je communique 
                    RBx_recu.Text += User + " dit : " + vbCrLf + Message + vbCrLf + vbCrLf
                    RBx_recu.SaveFile(chemin)
                End If
            Catch ex As Exception
                If ex.ToString() <> "" Then
     
                End If
     
            End Try
     
        End Sub
    merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Janvier 2010
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 196
    Points : 81
    Points
    81
    Par défaut
    Mon problème se situe juste là :

    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
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Try
                If Listener.Pending = True Then
                    Me.Show()
                    Message = ""
                    Client = Listener.AcceptTcpClient()
                    Dim Reader As New StreamReader(Client.GetStream())
                    While Reader.Peek > -1
                        Message = Message + Convert.ToChar(Reader.Read()).ToString
                    End While
                    ' User c'est le client que je communique 
                    RBx_recu.Text += User + " dit : " + vbCrLf + Message + vbCrLf + vbCrLf
                    RBx_recu.SaveFile(chemin)
                End If
            Catch ex As Exception
                If ex.ToString() <> "" Then
     
                End If
     
            End Try
     
        End Sub
    je n'accepte qu'un seul client à la fois comment dois je modifié ce code pour accepté plusieurs clients à la fois

Discussions similaires

  1. Utilisation d'un thread pour faire une pause.
    Par ropabo dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 11/06/2006, 14h28
  2. [VB.NET][VS2005] Thread pour form MDI
    Par daner06 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/04/2006, 14h26
  3. [MFC] Creation d'un thread pour un popup d'attente
    Par firejocker dans le forum MFC
    Réponses: 8
    Dernier message: 07/02/2006, 09h15
  4. Réponses: 3
    Dernier message: 11/02/2004, 12h50

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