Communication C++ / C# par socket

Résolu
greenzephyr Messages postés 7 Date d'inscription mercredi 15 novembre 2006 Statut Membre Dernière intervention 8 août 2009 - 15 nov. 2006 à 09:36
greenzephyr Messages postés 7 Date d'inscription mercredi 15 novembre 2006 Statut Membre Dernière intervention 8 août 2009 - 16 nov. 2006 à 10:02
Bonjour à tous, chui un petit nouveau ici. Je ne sais pas si ma question est sur le bon forum (ici ou forum socket). Bref j'ai besoin d'aide.

Je fais une communication par socket entre un serveur C++ et un client C#.
Mon pb: l'échange des données

Pour échanger les données entre les deux, j'utilise le NetworkStream.
Pour envoyer un tableau de double au serveur, mon client passe par une transformation en tableau d'octets:

private void sendArrayBis()
{
 //mon tableau de test à envoyer
 double[] test=new double[]{1.22,22.3334};

 //mon tableau d'octets à remplir
 Byte[] data=new byte[8 * test.Length];

 //transformer mon tabl. de double en tabl. d'octets
 int idx=0;
 for(int cpt=0;cpt<test.Length;cpt++){
         System.BitConverter.GetBytes(test[cpt]).CopyTo(data,idx);
         idx+=8;
 }

 //envoyer (_stream <NetworkStream>)
 _stream.Write(data,0,data.Length);
 _stream.Flush();
}

Le serveur le recoit (, connait le nbr de double à recevoir) et le convertit en en double*

1°) Est ce la bonne et meilleure méthode pour envoyer mes données par la socket ?

2°) Quid d'un tableau n dimensions ? On parcourt le tableau et on met tous les double à la suite dans un tableau d'octets ?
RQ : Mon serveur attend un double**

Merci de votre aide...

2 réponses

taupe4 Messages postés 91 Date d'inscription dimanche 16 avril 2006 Statut Membre Dernière intervention 17 avril 2008 1
16 nov. 2006 à 02:25
Ma méthode personnelle pour envoyer des données reste à prendre un BinaryWriter, qui permet d'envoyer tous les types sans devoir les convertir.

Et celle que j'utilise pour envoyer des tableaux est simple: on envoie un int avec le nombre d'items dans le tableau, suivi des objets du tableau un après l'autre.

1) ta méthode est bonne, mais un BinaryWriter reste très facile à mettre en place (par contre, avec la compatibilité C++, je sais pas, mais ça doit sûrement fonctionner)

L'autre question, je sais pas trop, surtout que les pointeurs et moi, ça va pas bien.
Enjoy
3
greenzephyr Messages postés 7 Date d'inscription mercredi 15 novembre 2006 Statut Membre Dernière intervention 8 août 2009
16 nov. 2006 à 10:02
Nickel, ca me plait bien ton BinaryWriter.
Pour les double**, c est en fait pas plus compliqué je pense.

COmme toi, je vais d'abord envoyer les dimensions du tableau (si 2 dimensions, 2 int) puis tous les objets du tableau à la suite

merci beaucoup  ;-))
0
Rejoignez-nous