Bonjour à tous,

J'essaye de créer un petit logiciel de chat.

Pour cela j'ai un serveur et un client

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

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
 
Imports System.Net
Imports System.Net.Sockets
Imports System.IO
Imports System.Threading
 
Module Module1
 
#Region "Declarations"
    Dim TcpListener1 As TcpListener
    Dim port As Integer = "8080"
    Dim client As TcpClient
#End Region
 
    Sub Main()
        'Création du serveur + mise en attente
        TcpListener1 = New TcpListener(IPAddress.Any, port)
        TcpListener1.Start()
        'Attend la connexion d'un client
        Console.WriteLine("En attente de connexion...")
        While True
            Try
                Dim SocketClient As TcpClient = TcpListener1.AcceptTcpClient
                Console.WriteLine("Connecté !")
            Catch ex As Exception
                MsgBox("Erreur dans la connexion avec le serveur." + vbCrLf + ex.Message, MsgBoxStyle.Critical, "ERREUR: Connexion impossible")
            End Try
            Dim Stream As NetworkStream = client.GetStream()
            Dim sr As StreamReader = New StreamReader(Stream)
            Console.Write(sr.read)
        End While
    End Sub
 
End Module
cepandant lorsque je me connecte, j'ai bien "Bienvenue <pseudo> !" dans le client mais "Connected" ne s'afffiche pas dans la console du serveur, et je n'arrive pas à vois d'ou vient le probleme...

merci de votre aide !