[C#] struct -> byte[]

Je suis sur un (gros) projet réseau, basé essentiellement sur UDP, et donc avec des packets de données bien précis a définir.

La question du jour : le packet de donnée est représenté par la structure C suivante :

struct packet {
short magic;
unsigned short port;
unsigned long address;
} p;

Quel que soit le langage, c’est toujours un packets d’octets qu’on envoit, (char* ; ou byte[] ).

Alors, en C/C++, c’est tout con, un cast du genre
send( (char*) &p)
et c’est réglé.

Maintenant, la question, c’est :
Quelle est la façon la plus propre, et la plus simple de faire ca en C# ?

Marshal.PtrToStructure et Marshal.StructureToPtr?

Sinon avec BinaryReader tu lit ta struct element par element sur le stream et tu reconstruit ta struct toi meme. Genre ReadShort, ReadUShort, ReadULong ou un truc comme ca…

Enfin je dis ca, si ca se trouve y a mieux :stuck_out_tongue: chui pas un gourou stream/comm reseau.

Oups… uhuh… disons que moi j’ai fait ca a coup de string converties en tableaux de bytes

[quote name=’[PERE]Cil’ date=’ 10 Mar 2005, 14:37’]Oups… uhuh… disons que moi j’ai fait ca a coup de string converties en tableaux de bytes
[right][post=« 340141 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Beurk :stuck_out_tongue:

:stuck_out_tongue: Hehe.

C’est bien le probleme avec c# !

On pense avoir trouver sa bonne petite façon à soit pour faire son truc , sans se rendre compte que c’est un poil crado , puis on apprends 3 jours apres qu’il y a des classes et des methodes specialement fait pour …

Avec un peu de recul , je repense aux premieres lignes d’un bouquin d’apprentissage du c# qui me fait sourire.
Il disait en gros que c# etait ultra simple, avec un nombre tres tres reduit de mots-clés… forcément , mais si’l parle du nombre de classes dispos là c’est autre chose !

Pas de troll , j’adore le C#, et le fait qu’il y ait des tonnes de classes et de methodes differentes , je trouve ça parfait !

Faut juste pas oublier d’installer la doc des SDK et passer du temps dessus !

Ha ca, ca change du C ou il faut tout se coder tout seul. La le truc vient avec une enorme library standard qui prend du temps a apprendre et a connaitre. Mais au bout d’un moment on arrive a comprendre les « philosophies » des differentes partie du framework et meme si on connait pas les fonctions on se « doute » de ce qui est la et ou avec quelle fonction souvent. Parfois on est surpris, souvent agreablement :stuck_out_tongue:

Ouais hein pour moi je voulais avant tout un truc qui marche… je pourrais toujours faire des structures par la suite…

J’ai pas envie de passer 90% de mon temps à chercher une hypothétique fonction qui pourrait automatiser mon bordel. La ca marche, je le sais, et maintenant que je sais que Marshal ca existe, ben ce weekend je vais tout marshaliser :P.

Bon ben finalement j’ai préféré les binarywriter et binaryreader…

Par contre c’est quoi la fonction/propriété pour récupérer le tableau de bytes d’un memorystream? J’ai pas trouvé?

[quote name=’[PERE]Cil’ date=’ 6 Apr 2005, 08:51’]Bon ben finalement j’ai préféré les binarywriter et binaryreader…

Par contre c’est quoi la fonction/propriété pour récupérer le tableau de bytes d’un memorystream? J’ai pas trouvé?
[right][post=“347579”]<{POST_SNAPBACK}>[/post][/right][/quote]

GetBuffer() je crois.
http://msdn.microsoft.com/library/fre/defa…buffertopic.asp