Bonjour,

Voila j'ai un projet dans mon entreprise. Celui-ci est le suivant, j'ai une application cliente avec un simple bouton(connecter). A l'action de celui-ci ,il envoie le mot de passe et login de l'utilisateur au serveur qui possède toute les méthodes pour récupérer toute les informations de l'utilisateur utilisateur. Donc le serveur doit renvoyer un objet nommé utilisateur avec comme paramètre (id,login,username,adressemail). Pour réaliser ceci j'ai créer 4 classes :
- ClientTCP
-ServerTcp
-Paquet : pour récuperer l'objet et l'envoyer
-PaquetManager

Voici mes classes :

ClientTcp
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
 
 Dim MonSocketClient As Socket
    Dim MonThread As Thread
 
    Public Function Connect() As String
 
        Dim reponse As String = String.Empty
        Dim AddresseServeur As String = ""
        Dim numeroPort As Integer = 0
        Dim user As String = ""
        Dim password As String = ""
        Try
 
            'Initialise Socket 
            MonSocketClient = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
 
            'On récupère les informations de connexion
            Dim liste As New List(Of String)
            liste = RecupereInformationConnecion(AddresseServeur, numeroPort, user, password)
            AddresseServeur = liste.ElementAt(0)
            numeroPort = CType(liste.ElementAt(1), Integer)
            user = liste.ElementAt(2)
            password = liste.ElementAt(3)
 
            Console.WriteLine(AddresseServeur & "        " & numeroPort)
 
            'Entre les informations de connexion
            Dim monEP As IPEndPoint = New IPEndPoint(IPAddress.Parse(AddresseServeur), numeroPort)
            Console.WriteLine(AddresseServeur & "        " & numeroPort)
            MonSocketClient.Connect(monEP)
 
            'Envoie le Password et User
            Dim u As Boolean = True
            u = SendConnect(user + ";" + password)
            If u = True Then
                reponse = " Fin de connexion "
            Else
                reponse = " Erreur lros de l'envoi"
            End If
            ThreadLecture(AddresseServeur, numeroPort)
        Catch ex As Exception
            reponse = "Erreur de connexion"
            Console.WriteLine(ex.Message)
        End Try
 
        Console .WriteLine (reponse )
 
        Return reponse
    End Function
 
    Private Function RecupereInformationConnecion(ByVal AddresseServeur As String, ByVal numeroPort As Integer, ByVal user As String, ByVal password As String) As List(Of String)
        Dim liste As New List(Of String)
 
        Dim value As String = ""
        value = ConfigurationManager.AppSettings.Get("Authentification")
 
        Dim valeur() As String
        valeur = value.Split(";")
 
        AddresseServeur = valeur(0)
        AddresseServeur = AddresseServeur.Replace("Server=", "")
        liste.Add(AddresseServeur)
 
        Dim temporairePort As String = valeur(1)
        temporairePort = temporairePort.Replace("Port=", "")
        numeroPort = CType(temporairePort, Integer)
        liste.Add(numeroPort)
 
        user = valeur(2)
        user = user.Replace("User=", "")
        liste.Add(user)
 
        password = valeur(3)
        password = password.Replace("Password=", "")
        liste.Add(password)
 
        Return liste
 
    End Function
 
    Private Function SendConnect(ByVal InfoConnection As String) As Boolean
        Dim reponse As Boolean = True
 
        Try
            Dim message() As Byte
            message = Encoding.UTF8.GetBytes(InfoConnection)
 
            Dim Envoi As Integer = 0
            Envoi = MonSocketClient.Send(message)
 
        Catch ex As Exception
            reponse = False
 
        End Try
        Console.WriteLine("vjldfbvl")
        Return reponse
    End Function
 
    Private Sub ThreadLecture(ByVal adresse As String, ByVal port As String)
 
        Try
 
 
            Dim listener As TcpListener = New TcpListener(IPAddress.Parse(adresse), port)
            listener.Start()
 
            While True
                Dim client As TcpClient = listener.AcceptTcpClient()
                Dim ts As ParameterizedThreadStart = New ParameterizedThreadStart(AddressOf AcceptConnection)
                Dim MonThread As Thread = New Thread(ts)
                MonThread.Start()
 
            End While
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
 
    Private Sub AcceptConnection(ByVal obj As Object)
        Try
            Dim utilisateur As New User
            Dim client As TcpClient = CType(obj, TcpClient)
            Dim stream As NetworkStream = client.GetStream
            Dim paquet As New Paquet
            paquet = paquet.Receive(stream)
            Dim ap As PaquetManager
            ap = CType(paquet, PaquetManager)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
    End Sub
ServeurTcp
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
 
Dim port As Integer = 5100
    Dim auth As AuthManager
 
    Public Sub StartServeur()
 
        Dim listener As TcpListener = New TcpListener(IPAddress.Any, port)
        listener.Start()
 
        While True
            Dim client As TcpClient = listener.AcceptTcpClient()
            Dim ts As ParameterizedThreadStart = New ParameterizedThreadStart(AddressOf AcceptConnection)
            Dim MonThread As Thread = New Thread(ts)
            MonThread.Start()
 
        End While
 
    End Sub
 
    Private Function TraitementConnexion(ByVal SocketEnvoi As Socket) As User
        Dim utilisateur As New User
        Dim tabByte() As Byte
        Dim recu As Integer
        'Récupère le message
        recu = SocketEnvoi.Receive(tabByte)
        'Traduit en string
        Dim chaine As String = Encoding.UTF8.GetString(tabByte)
        chaine.Substring(0, recu)
        Dim tab() As String = chaine.Split(";")
        Dim user As String = tab(0)
        Dim password As String = tab(1)
        utilisateur = auth.Connect(user, password)
        Dim stream As NetworkStream
 
        Return utilisateur
    End Function
 
    Private Sub AcceptConnection(ByVal obj As Object)
        Try
            Dim utilisateur As New User
            Dim client As TcpClient = CType(obj, TcpClient)
            Dim stream As NetworkStream = client.GetStream
            Dim paquet As New Paquet
            paquet = paquet.Receive(stream)
 
            Dim chaine As String = paquet.ToString
            Console.WriteLine(chaine)
            Dim tab() As String = chaine.Split(";")
            Dim user As String = tab(0)
            Dim password As String = tab(1)
'renvoi l'utilisateur avec ce login et password
            utilisateur = auth.Connect(user, password)
            Dim ap As PaquetManager = New PaquetManager(utilisateur)
            paquet.Send(ap, stream)
 
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
 
    End Sub
Paquet
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
 
Public Enum TypePaquet
    Authentification
End Enum
 
<Serializable()> Public Class Paquet
 
    Private _type As TypePaquet
    Public Property TYPE() As TypePaquet
        Get
            Return _type
        End Get
        Set(ByVal value As TypePaquet)
            _type = value
        End Set
    End Property
 
    Public Sub Paquet(ByVal typePa As TypePaquet)
        _type = typePa
    End Sub
 
    Public Sub Send(ByVal paquet As Paquet, ByVal stream As Stream)
        Dim bf As New BinaryFormatter
        bf.Serialize(stream, paquet)
        stream.Flush()
    End Sub
 
    Public Function Receive(ByVal stream As NetworkStream) As Paquet
 
        Dim p As New Paquet
        p = Nothing
 
        Dim bf As New BinaryFormatter
        p = CType(bf.Deserialize(stream), Paquet)
 
        Return p
    End Function
End Class
PaquetManager
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
 
<Serializable()> Public Class PaquetManager
    Inherits Paquet
 
    Private _user As User
    Public Property USER() As User
        Get
            Return _user
        End Get
        Set(ByVal value As User)
            _user = value
        End Set
    End Property
 
    Public Sub New(ByVal us As User)
        _user = us
    End Sub
End Class
Voila voila mais mon code ne marche pas du tout et j'ai beau chercher et essayer des choses je n'y arrive pas . Pouvez vous m'aider a réussir cette fonctionnalité?

PS: J'ai réussi a créer un chat pour m’entraîner qui fonctionne mais je pense que le problème est d'envoyer et recevoir des objets..

Cordialement,
Kévin