Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1814 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Equivalent en C# pour sérialiser une structure. (Envoi par le réseau)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Equivalent en C# pour sérialiser une structure. (Envoi par le réseau)

n°1832088
Willits
La réponse est 42
Posté le 29-12-2008 à 11:16:44  profilanswer
 

Bonjour à tous,
 
En C, il est possible d'obtenir les données bruts d'une struct et de les envoyer par le réseau, puis de faire un petit cast pour re-obtennir nos données structuré.
 
Je voudrai savoir si en C# c'est faisable aussi simplement ?
 
J'explique ce que je veux faire:
- J'ai un objet complexe qui contient une trame réseau et qui remplie une PropertyGrid (Permet de faire une trame "custom" ).
- Je voudrai sérialiser les propriétés privé de l'objet (par les enums, les arguments, les get/set innutiles utilisé pour la propertyGrid) et l'envoyer sur le réseau.
- La trame réseau reçu par le serveur serait désérialisé, puis remplirai une jolie PropertyGrid avec ce que le client à envoyé.
 
Je vous remercie.
 
Willits

mood
Publicité
Posté le 29-12-2008 à 11:16:44  profilanswer
 

n°1832109
moi23372
Posté le 29-12-2008 à 12:10:21  profilanswer
 

implémente ISerializable, surtout si tu veux qu'il serialise les membres privés.  
La serialisation standard ne serialise pas les membres privés, uniquement les membres public.


---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)
n°1832268
Willits
La réponse est 42
Posté le 29-12-2008 à 17:46:20  profilanswer
 

Je n'ai pas testé, mais avec ISerializable, j'ai l'impression que l'on "tag" les données et que ces tags sont placé dans le résultat binaire, je n'ai pas testé mais les quelques exemples de ISerializable que j'ai vu avaient l'air de faire ça.
 

Code :
  1. private MyStringData(SerializationInfo si, StreamingContext ctx) {
  2.         dataItemOne = si.GetString("First_Item").ToLower();
  3.         dataItemTwo = si.GetString("dataItemTwo").ToLower();
  4.     }
  5.     void ISerializable.GetObjectData(SerializationInfo info, StreamingContext ctx) {
  6.         // Fill up the SerializationInfo object with the formatted data.
  7.         info.AddValue("First_Item", dataItemOne.ToUpper());
  8.         info.AddValue("dataItemTwo", dataItemTwo.ToUpper());
  9.     }


 
Ce qui me tracasse, c'est que ces fonction me donne l'impression d'ajouter des "tags" aux données en binaires. (Puisqu'on les récupères avec GetString).
 
Ce que je veux c'est exactement le même comportement qu'une struct en C. (En fait, je doit envoyer les données à un soft écrit en C).
 
Cordialement,
 
Willits

n°1832280
moi23372
Posté le 29-12-2008 à 18:13:44  profilanswer
 

le problème, c'est que la façon de serialiser en C dépend parfois d'un compilateur à un autre, et parfois d'une version à l'autre, cela peut être différent.  
 
Honnêtement, je pense pas que tu arriveras à faire communiquer la serialization des deux languages.  
Pour interopérer entre les languages, il existe des moyens beaucoup plus sûre et simple pour le faire.
 
Comme tu passes par le réseau, démerde toi pour faire communiquer les deux languages entre eux en passant par la couche TCP.  
 
Tu as la mains des deux cotés, tu devrais pouvoir t'en sortir.
sinon essaye éventuellement de rédéfinir la même structure en .NET, et essaye de voir si le casting passe à la récupération de la trame réseau.


Message édité par moi23372 le 29-12-2008 à 18:15:52

---------------
quand un homme raisonne mal c'est qu'il n'a pas les données pour raisonner mieux (diderot)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Equivalent en C# pour sérialiser une structure. (Envoi par le réseau)

 

Sujets relatifs
[C] Login password en console[C# - VB.NET - SQL] arrondir un prix (sans virgule)!
[C#] Realisation d'une ProgressBarUtilisation de openssl dans C#
[VB.NET] Communiquer avec un service Windows par l'envoi de paramètres[C#] Redemption.dll
C++ .Net : ouvrir une autre console[C#] Impossible d'effectuer une requete HTTP POST avec HttpWebRequest
[Lex Yacc] Structure incompletedessiner un réseau de pétri
Plus de sujets relatifs à : Equivalent en C# pour sérialiser une structure. (Envoi par le réseau)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR