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 :

[VBNET][Client/Server]Quels conseils>Remote/Serialization


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut [VBNET][Client/Server]Quels conseils>Remote/Serialization
    Bonjour,
    Je vous soumet tout dabord mon probleme.
    Je dois faire dans le cadre d'un projet pour l'ecole, une application client / server.

    Pour l'instant, je commence simplement, j'aimerais que mon client se connect au server, jusque là ca va, ensuite j'aimerais faire transiter des informations de l'un à l'autre ( à terme plusieurs clients pourront se connecter au server ).

    Le but du projet est de faire une sorte de net Send sur vb .net, seulement j'aimerais pousser cà un peu plus loin et qu'il ressemble plus à un chat.
    Donc, si je ne me trompe pas, je vais devoir faire passer des objets ( je sais pas si le terme tilisé est le bon).
    J'ai commencé à regarder du coté des Remotes et interface, et j'ai crus entendre parler de la sérialisation ( ? ).

    Tout cà est encore un peu ( voir tres ) flou pour moi.

    Auriez vous des conseils ou des pistes pour commencer ce projet.

    Merci d'avance,

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Par défaut
    Effectivement le plus facile est d'utiliser la sérialisation. Pour ma part, il existe plusieurs types de sérialisation en dotnet. Le plus approprié ici, est la sérialisation binaire. Je pense même qu'il existe un tuto sur developpez sur les différents types de sérialisation...

    http://odelmotte.developpez.com/tuto...serialization/

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 113
    Par défaut
    Le plus simple pour faire un chat, n'est pas d'utiliser les sockets ??

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Par défaut
    Bien sur que les sockets sont indispensables à une archi client serveur, mais les sockets servent à établir une communication. Il faut ensuite communiquer par exemple par l'envoi d'objet sérialisés.

  5. #5
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Merci beaucoup pour ces réponses, je n'avais pas vus ce tuto, il l'air tres interessant. Je ne met pas le post en résolut au cas ou j'ai des questions.

    Merci encore, je regarde cà tout de suite.

  6. #6
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Dès que c'est ok pour toi n'oublies pas tout de même de mettre

  7. #7
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Bonjour,
    J'ai un leger probleme avec la serialisation et le MemoryStream

    Il me met à chaque fois le message "Fin de flux rencontre avant la fin de l'analyse"

    Je vous poste le code
    Dans un premier j'ai une classe serializable
    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
    <Serializable()> Public Class MessageGen
     
        Private nom As String
        Private message As String
        Public hostname As String = Net.Dns.GetHostName
     
     
        Public Property pNom() As String
        Get
            Return nom
        End Get
        Set(ByVal Value As String)
            nom = Value
        End Set
        End Property
     
        Public Property pMessage() As String
        Get
            Return message
        End Get
        Set(ByVal Value As String)
            message = Value
        End Set
        End Property
    End Class
    Ensuite j'ai mis juste sur un bouton pour tester
    Voilà le code
    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try
        Dim serializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
                New Runtime.Serialization.Formatters.Binary.BinaryFormatter
        Dim Deserializer As Runtime.Serialization.Formatters.Binary.BinaryFormatter = _
                New Runtime.Serialization.Formatters.Binary.BinaryFormatter
        Dim MemStream As New IO.MemoryStream
        Dim obj As New MessageGen
     
        ClientIdent.pMessage = "test message"
     
        serializer.Serialize(MemStream, ClientIdent)    
        MsgBox(MemStream.Length)
     
        MemStream.Seek(MemStream.Length, IO.SeekOrigin.Begin)    
        obj = Deserializer.Deserialize(MemStream)
        MsgBox(obj.pMessage)
     
        serializer = Nothing
        Deserializer = Nothing
        obj = Nothing
        MemStream.Close()
     
    Catch ex As Runtime.Serialization.SerializationException
        MsgBox("Button_Click1 : " & ex.Message.ToString)
    End Try
     
    End Sub
    [edit] ¨Pardon j'ai oublie de preciser que ClientIdent est une instance de MessageGen

    Désolé si le code n'est pas tres "propre", mais en plus de ne pas tres bien maitriser le language, durant mes tests je dois dire que j'ai ce gros défaut

    Merci d'avance,

    [Re EDIT] RAA boulet que je suis, en relisant mon code apres une clope j'ai vus mon erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MemStream.Seek(0, IO.SeekOrigin.Begin)
    Logique, c'est quand on trouve qu'on se trouve bete de ne pas l'avoir vus avant :d
    [/b]

  8. #8
    Membre chevronné Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Par défaut
    Hum au final je re bloque sur un autre probleme, je me demande si
    >> C'est possible
    >> je me trompe peut etre de méthode

    Je pencherais plus pour le choix 2 donc j'explique ce que je fais.

    J'aimerais envoyer un objet serialise par le reseau.
    J'ai essaye au traver de fichier, ca marche sans probleme, puis je me suis dis que ce serais pas mal de se passer des fichiers, donc je me suis penché sur les MemoryStream.

    Donc je serialise un objet dans MemoryStream que j'envois par le reseau grace au NetworkStream.
    A la reception je lis le flux et instancie un nouveau MemoryStream avec le tableau de bytes ainsi cree.
    Ensuite j'essaye de Deserialiser et là :
    Le flux binaire ne contient pas de BinaryHeader valide, 0 raison possibles : Flux non valide ou modification de la version de l'objet entre la serialisation et la deserialisation.

    Pour ma part c'est un peu flou, mon objet n'a pas changé.
    Si quelqu'un peu m'eclairer sur ce message d'erreur,

    Merci d'avance.
    Nicolas,

    [edit] erf finalement j'ai trouve au lieu de lire mon memoryStream puis d'ecrire dans le NetworkStream, fallait juste faire un getBuffer dans le networkStr

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

Discussions similaires

  1. Quels conseils donner pour cloner/backup son server sous Redhat
    Par pierrot10 dans le forum Administration système
    Réponses: 2
    Dernier message: 28/09/2009, 10h03
  2. [.Net Remoting] Communication Client Server
    Par genki dans le forum Framework .NET
    Réponses: 2
    Dernier message: 22/01/2007, 09h12
  3. Réponses: 4
    Dernier message: 06/03/2006, 17h54
  4. [réseau] [client/server] Transmettre la sortie standard
    Par legzo dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 30/06/2005, 16h15
  5. [ado][sql server] CLIENT/SERVER
    Par nil dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 08h12

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