Communication C++ / C# par socket [Résolu]

greenzephyr 7 Messages postés mercredi 15 novembre 2006Date d'inscription 8 août 2009 Dernière intervention - 15 nov. 2006 à 09:36 - Dernière réponse : greenzephyr 7 Messages postés mercredi 15 novembre 2006Date d'inscription 8 août 2009 Dernière intervention
- 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...
Afficher la suite 

2 réponses

Répondre au sujet
taupe4 94 Messages postés dimanche 16 avril 2006Date d'inscription 17 avril 2008 Dernière intervention - 16 nov. 2006 à 02:25
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de taupe4
greenzephyr 7 Messages postés mercredi 15 novembre 2006Date d'inscription 8 août 2009 Dernière intervention - 16 nov. 2006 à 10:02
0
Utile
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  ;-))
Commenter la réponse de greenzephyr

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.