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:
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 :mrgreen: