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
|
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading
Public Class Form1
#Region "Declarations"
Dim Thread1 As Thread
Dim Tcpclient1 As TcpClient
Dim texte As String = ""
#End Region
#Region "Procédures"
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Form1_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
Deconnexion()
End Sub
Private Sub ButtonConnexion_Click(sender As System.Object, e As System.EventArgs) Handles ButtonConnexion.Click
'verification des textbox
If TextBoxIP.Text = "" Or IPAddress.TryParse(TextBoxIP.ToString, Nothing) = True Then
Msg("Veuillez sélectionner une adresse IP valide" + vbCrLf, 2)
Else
If TextBoxPort.Text = "" Then
Msg("Veuillez sélectionner un port" + vbCrLf, 2)
Else
If TextBoxPseudo.Text = "" Then
Msg("Veuillez sélectionner un pseudo (ex: Toto)" + vbCrLf, 2)
Else
connexion(TextBoxIP.Text, TextBoxPort.Text, TextBoxPseudo.Text)
End If
End If
End If
End Sub
Private Sub ButtonDeconnexion_Click(sender As System.Object, e As System.EventArgs) Handles ButtonDeconnexion.Click
Thread1.Abort()
Deconnexion()
Tcpclient1.Close()
Msg("Déconnecter du serveur !" + vbCrLf, 1)
End Sub
Private Sub ButtonSend_Click(sender As System.Object, e As System.EventArgs) Handles ButtonSend.Click
Dim Stream As NetworkStream = Tcpclient1.GetStream()
Dim sw As StreamWriter = New StreamWriter(Stream)
Dim Message As String = TextBox4.Text
sw.Write(Message)
sw.Flush()
End Sub
Sub Msg(ByVal msg As String, type As Integer)
'différents type de message
Select Case type
Case 1
texte = "INFO: " & msg
Case 2
texte = "ERREUR: " & msg
End Select
'appele l'écriture du message
Me.Invoke(New dWriteMsg(AddressOf WriteMsg), texte)
End Sub
Delegate Sub dWriteMsg(ByVal texte As String)
Sub WriteMsg(ByVal texte As String)
'écrit le texte dans la boite de dialogue
TextBox5.Text += texte
End Sub
Delegate Sub dDeconnexion()
Sub Deconnexion()
'stop thread
Thread1.Abort()
'ferme le client
Tcpclient1.Close()
TextBox4.Enabled = False
TextBox5.Enabled = False
TextBoxIP.Enabled = True
TextBoxPort.Enabled = True
TextBoxPseudo.Enabled = True
ButtonConnexion.Enabled = True
ButtonDeconnexion.Enabled = False
End Sub
Sub connexion(ByVal IP, ByVal PORT, ByVal PSEUDO)
TextBox5.Text = Nothing
Try
'Connexion au serveur
Tcpclient1 = New TcpClient(IP, PORT)
Msg("Bienvenue " & PSEUDO & " !" + vbCrLf, 1)
EnvoiePseudoServeur(PSEUDO)
Catch ex As Exception
MsgBox("Erreur dans la connexion avec le serveur." + vbCrLf + ex.Message, MsgBoxStyle.Critical, "ERREUR: Connexion impossible")
Application.Restart()
End Try
'Activation des controles
TextBox4.Enabled = True
TextBox5.Enabled = True
TextBoxIP.Enabled = False
TextBoxPort.Enabled = False
TextBoxPseudo.Enabled = False
ButtonConnexion.Enabled = False
ButtonDeconnexion.Enabled = True
'lancement du thread
Thread1 = New Thread(AddressOf ThreadLecture)
Thread1.Start()
End Sub
Sub ThreadLecture()
While Tcpclient1.Connected = True 'tant que l'on est connecté
'création du flux de lecture
Dim Stream As NetworkStream = Tcpclient1.GetStream()
Dim sr As StreamReader = New StreamReader(Stream)
Dim Message As String = ""
Try
Message = sr.Read 'lecture du flux
Me.Invoke(New dWriteMsg(AddressOf WriteMsg), Message) 'affichage du texte (flux)
Catch ex As Exception
Msg("Connexion perdue." + vbCrLf, 2)
If Not Me.IsDisposed Then
'on appelle la déconnexion
Me.Invoke(New dDeconnexion(AddressOf Deconnexion))
End If
End Try
End While
End Sub
Sub EnvoiePseudoServeur(ByVal pseudo As String)
Dim Stream As NetworkStream = Tcpclient1.GetStream()
Dim sw As StreamWriter = New StreamWriter(Stream)
sw.Flush()
End Sub
#End Region
End Class |
Partager