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 :

[VB.NET] Client/Serveur Socket


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut [VB.NET] Client/Serveur Socket
    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

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    si vous faites le programme des 2 côtés utilisez plutot wcf, c'est plus simple à coder (pas forcément plus simple à comprendre ^^)

    ca encapsule la connexion et ca expose des membres de classe
    en schématisant le fonctionnement ca donne sur le serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public function connect (login as string, password as string) as user
       ' le code
    end function
    il faut un classe user avec les 4 propriétés que vous voulez retourner
    vous codez la sub pour remplir une isntance de user que vous retournez

    et sur le client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim userinfo as user = moninstancewcf.connect(user, pass)
    ca appelle la fonction sur le serveur, et ca attend le retour de la fonction
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Bonjour,

    Tout d'abord je te remercie pour ta réponse. Ensuite je ne connais pas du tout wcf ...
    En réalité, je vais lancer ceci sur deux applications différente une serveur et un client. le serveur a des méthodes que je lui ai implémenter l'une d'elle est de lire un fichier xml nommé user.xml. De ce fait , une fonction connect renvoie le user depuis son login et mdp. Ensuite, le serveur doit envoyé ce user au client.

    Donc est-ce que ta solution est toujours valide ? Si oui peut tu m'expliquer le fonctionnement ?

    Cordialement,
    Kévin

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    wcf permet de faire des webservices, ca encapsule les transmissions réseaux
    on peut faire du client serveur comme tu le souhaites avec

    sur l'appli serveur tu fais un new du service wcf
    sur l'appli client tu fais un new du client wcf
    ca utilise du socket tcp/ip mais c'est déjà précodé

    et après si tu relis mon exemple ca simplifie le traitement
    car quand le user exécute instancewcf.connect, le code n'est pas exécuté dans l'application client, mais par le serveur dans la fonction connect que lui seule a, il peut alors lire dans le fichier et faire un return de ce qu'il faut
    le return fait la retour repart en tcp/ip vers le client

    après il y a des tutos qui expliquent le fonctionnement et le paramétrage de wcf
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Merci encore pour ta réponse.
    Je vais lire des tutoriel sur ce service car je t'avoue je n'ai pas tout compris ^^.

    Cordialement,
    Kévin

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    ReBonjour,

    J'ai discuter avec mon maitre de stage . Il souhaite que j'utilise : .NET Remoting.
    Donc pouvez vous me dire si j'ai bien compris :
    - Le client envoie le mot de passe et le login au serveur
    - Le serveur lui recois ce que le client lui demande
    - Il appele la fonction connect pour recuperer l'user
    - Il le "compresse" en Byte() et l'envoie au client
    -Client réceptionne et le "décompresse"

    Le seul soucis c'est que je ne sais pas comment "compresser un objet" pour qu'il puisse passer en TCP.

    Avez vous une explication, un conseil.. ?

    Cordialement,
    Kévin

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    tu peux dire à ton maitre de stage que wcf c'est .net remoting en mieux, et que wcf a plus d'avenir que .net remoting
    le principe de fonctionnement est quasiment le même sur les 2, avec plus de pièges sur .net remoting peut etre

    après quand il te parle de compresser en byte, c'est parce qu'en tcp, il n'y a que des octets qui transitent, un string aussi est transformé en octet pour passer, après peut etre qu'il voulait dire crypter...

    après pour reschématiser une fois de plus

    si dans un programme tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public sub a
      dim s as string = b("a")
      msgbox(s)
    end sub
     
    public function b (str as string) as string
      return str & str
    end function
    et que tu l'exécute le message box contiendra "aa"

    maintenant si tu veux que la fonction b soit sur le serveur, en socket pur c'est chiant à écrire, avec wcf il suffit de mettre la fonction b dans le programme du serveur (pas dans le client donc), de faire un contrat wcf, de partager une dll entre les 2 programmes et sur le client de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim instancewcf as Imoncontrat
    channelwcf.open
    dim s as string = instancewcf.b("a")
    channelwcf.close
    b étant sur le serveur, wcf s'occupe de contacter le serveur, lui demande d'exécuter b avec le paramètre "a" et il attend le retour pour le mettre dans s
    le serveur lui exécute le code, et tu n'a rien codé pour la connexion entre les 2 (à part fournir une ip et un port)

    donc au final c'est aussi simple d'écrire un programme réseau qu'un programme normal, mis à part qu'il faut coder quelques lignes de wcf (moins de 10 en théorie), faire un contrat et paramétrer le tout
    et si vraiment .net remoting est obligatoire ce n'est pas si grave, ca marche aussi bien, et il y a aussi des tutos pour ca
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Bonjour à tous,

    Je reviens vers vous car le code que j'ai créer ne fonctionne pas . J'ai une DLL nommé Framework. Dans celle-ci je possède les classes suivantes : ClientTcp,ServeurTcp,RemoteI,I(interface). J'ai ensuite créer deux nouveaux projets nommé win1 et win2.
    Voici les codes des différente 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
     
    Public Class ClientTCP
     
        Dim RemoteI As RemoteI
     
        Public Sub New()
            Dim liste As New List(Of String)
            liste = RecupereInformationConnecion()
     
            Dim AddresseServeur As String = ""
            Dim us As String = ""
            Dim pass As String = ""
            Dim numeroPort As Integer = 0
     
            AddresseServeur = liste.ElementAt(0)
            numeroPort = CType(liste.ElementAt(1), Integer)
            us = liste.ElementAt(2)
            pass = liste.ElementAt(3)
     
            Try
                Dim channel As TcpChannel = New TcpChannel
                ChannelServices.RegisterChannel(channel, True)
     
                Dim url As String = ""
                url = "tcp://" & AddresseServeur & ":" & numeroPort & " RemoteI"
                RemoteI = CType(Activator.GetObject(GetType(RemoteI), url), RemoteI)
                Try
                    If Not RemoteI Is Nothing Then
                        Dim user As String = us
                        Dim password As String = pass
                        Dim utilisateur As New User
                        utilisateur = RemoteI.Connect(user, password)
                        MsgBox(utilisateur.LOGIN)
                        MsgBox(utilisateur.PASSWORD)
                        MsgBox(utilisateur.USER)
                    End If
                Catch ex As Exception
                    MsgBox("Erreur !!!!!")
                End Try
            Catch ex As Exception
                MsgBox("Erreur de connexion")
            End Try
        End Sub
     
        Private Function RecupereInformationConnecion() As List(Of String)
            Dim AddresseServeur As String
            Dim user As String
            Dim password As String
            Dim numeroPort As Integer
     
     
            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
     
    End Class
    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
     
    Public Class ServeurTCP
     
     
        Public Shared Sub Start()
     
            Try
                Dim numeroPort As Integer = 5100
     
                'Création d'un nouveau canal sur le port d'écoute spécifier
                Dim channel As TcpChannel = New TcpChannel(numeroPort)
                'Enregistre le canan
                ChannelServices.RegisterChannel(channel, True)
                'Démarrage de l'écoute
                RemotingConfiguration.RegisterWellKnownServiceType(GetType(RemoteI), "RemoteI", WellKnownObjectMode.Singleton)
                Console.WriteLine("Le serveur a démarré avec succès")
                Console.ReadLine()
     
            Catch ex As Exception
                Console.WriteLine("Erreur démarrage serveur")
                Console.WriteLine(ex.Message)
            End Try
        End Sub
     
    End Class
    RemoteI:
    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
     
    Public Class RemoteI
        Inherits MarshalByRefObject
        Implements I
     
        'Indique que l'objet aura une durée de vie illimitée
        Public Overrides Function InitializeLifetimeService() As Object
            Return Nothing
        End Function
     
     
        Public Function Connect(user As String, password As String) As User Implements I.Connect
     
            'Création d'une nouvelle instance de authmanager
            Dim auth As New AuthManager
     
            'Création d'un objet User
            Dim utilisateur As New User
     
            'On appele la fonction Connect
            utilisateur = auth.Connect(user, password)
     
            Console.WriteLine(String.Format("Appel client sur Connect(): user:{0}, b={1}", user, password))
     
            Return utilisateur
        End Function
    End Class
    I:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Interface I
     
        Function Connect(ByVal user As String, ByVal password As String) As User
     
    End Interface
    Win1(client):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Imports Framework
     
     
    Public Class Form1
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim client As New ClientTCP
     
        End Sub
    End Class
    win2(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
     
    Imports Framework
     
    Public Class Form1
     
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim serveur As New ServeurTCP
            ServeurTCP.Start()
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim t As New AuthManager
    'méthode permettant de créer deux fichier xml avec des noms d'utilisateur mdp etc...
            t.NewFile()
        End Sub
    End Class
    Donc j'ai un messageBox qui s'affiche "Erreur de connexion". Cependant, je ne sais pas pourquoi l'adresseServeur est 127.0.0.1 le port est 5100.Avez vous une idée ?

    Cordialement,
    Kévin

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    dans visual studio il y a le menu
    Outils/Editeur de configuration de service WCF (qui modifie l'app.config, qui doit donc exister)

    là on paramètre le port, le contrat, le binding etc., et dans le code on fait juste référence au paramétrage
    sinon c'est une usine à gaz par le code (et il doit vous en manquer un morceau je pense)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Ah oui ! Oubliez de précisez l'erreur se situe a cette ligne . (Je passe dans le catch)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                RemoteI = CType(Activator.GetObject(GetType(RemoteI), url), RemoteI)
    Et voila l'objet User :
    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
     
    Public Class User
     
        Private _id As Guid
        Public Property id() As Guid
            Get
                Return _id
            End Get
            Set(ByVal value As Guid)
                _id = value
            End Set
        End Property
     
     
        Private _User As String
        Public Property USER() As String
            Get
                Return _User
            End Get
            Set(ByVal value As String)
                _User = value
            End Set
        End Property
     
        Private _password As String
        Public Property PASSWORD() As String
            Get
                Return _password
            End Get
            Set(ByVal value As String)
                _password = value
            End Set
        End Property
     
        Private _adresseMail As String
        Public Property ADRESSE_MAIL() As String
            Get
                Return _adresseMail
            End Get
            Set(ByVal value As String)
                _adresseMail = value
            End Set
        End Property
     
     
     
        Private _login As String
        Public Property LOGIN() As String
            Get
                Return _login
            End Get
            Set(ByVal value As String)
                _login = value
            End Set
        End Property
     
     
     
     
    End Class

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Merci beaucoup Pol63 pour l'intéret que tu porte à ma question depuis le début. Cependant mon maître a décider que je devrai utilisé .NET Remoting ^^.
    Pour WCF je dois faire cette manipulation dans mon appli serveur ou client ou les deux ?

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Bon je suis un boulet, j'avais oublier un / dans mon URL ^^ maintenant j'ai un messageBox "Erreur!!!!" ce qui me rassure ^^. De plus, je recois la ligne dans ma sortie : Appel client sur Connect(): userxxx, b=yyyyyy. Donc je pense qu'il n'arrive pas a renvoyé au client l'utilisateur car la ligne levant cette erreur est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                        utilisateur = RemoteI.Connect(user, password)

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 57
    Par défaut
    Bon j'ai réussi a corriger toutes les erreurs . Pour ceux qui ont eu le même problème n'oubliez pas de rendre sérialisable l'objet que vous passer .

    Cordialement,
    Kévin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. PTI BTS : client Serveur socket et compagnie
    Par Nicow57 dans le forum VB.NET
    Réponses: 0
    Dernier message: 24/04/2009, 13h28
  2. Client/Serveur Socket, envoyer un message précis
    Par Chyokyka dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2009, 17h59
  3. Application client/serveur sockets
    Par loreleï85 dans le forum Réseau
    Réponses: 4
    Dernier message: 05/01/2007, 12h44
  4. Question client-serveur socket
    Par Lex99 dans le forum Développement
    Réponses: 3
    Dernier message: 07/02/2006, 09h01

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