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

C Discussion :

envoyer des données avec une dll


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut envoyer des données avec une dll
    Bonjour,
    Je désire savoir si il est possible d'envoyer des données via liaison série ou ethernet à partir d'une dll.
    En effet je suis en train de faire une dll qui sert de plugin dans un jeu et qui actuellement les stockent sur un fichier texte , j'ai besoin cependant d'exporter ces données vers un autre pc , je ne sais pas comment les exporter.
    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Oh oui, tu as plein de possibilités. La plus simple à mon sens est d'utiliser une socket. Après, si tu veux utiliser le port série ou la carte ethernet directement, c'est plus sioux mais c'est faisable aussi si tu as une vraie raison.

    Sinon, les socket
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Je ne connais pas le C aurais-tu un lien qui pourrait m'aider.
    Voici le bout de code de la dll qui stocke les données dans le fichier il faut que j'envoie les datas dans cette boucle
    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
    void ExampleInternalsPlugin::UpdateTelemetry( const TelemInfoV2 &info )
    {
      FILE *fo = fopen( "ExampleInternalsTelemetryOutput.txt", "a" );
      if( fo != NULL )
      {
        fprintf( fo, "LocalVel=(%.2f,%.2f,%.2f)\n", info.mLocalVel.x, info.mLocalVel.y, info.mLocalVel.z );
        fprintf( fo, "LocalAccel=(%.1f,%.1f,%.1f)\n", info.mLocalAccel.x, info.mLocalAccel.y, info.mLocalAccel.z );
        TelemVect3 forwardVector = { -info.mOriX.z, -info.mOriY.z, -info.mOriZ.z };
        TelemVect3    leftVector = {  info.mOriX.x,  info.mOriY.x,  info.mOriZ.x };
        const float pitch = atan2f( forwardVector.y, sqrtf( ( forwardVector.x * forwardVector.x ) + ( forwardVector.z * forwardVector.z ) ) );
        const float  roll = atan2f(    leftVector.y, sqrtf( (    leftVector.x *    leftVector.x ) + (    leftVector.z *    leftVector.z ) ) );
        const float radsToDeg = 57.296f;
        fprintf( fo, "Pitch = %.1f deg, Roll = %.1f deg\n", pitch * radsToDeg, roll * radsToDeg );
        fclose( fo );
      }
    }
    merci pour ton aide

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Bon ce que tu dois envoyer, c'est clair.

    Maintenant, si tu l'envoie par le réseau, qu'est ce qu'il se passe si l'autre n'est pas là ?

    Le message est perdu et c'est pas grave ?
    Tu recommence plus tard ?
    C'est une erreur ?

    Après, tu peux commencer à regarder des tutos sur les socket

    http://melem.developpez.com/reseaux/winsock/
    http://broux.developpez.com/articles/c/sockets/
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    En fait le but est que la dll émette en permanence,le jeu accède à la dll à chaque rafraichissent d'image donc la Qté d'information est largement suffisante même si j'en perds certaines et de toute façon une fois synchronisé il n'y a aucune raison d'en perdre.
    Je ne connais pas le principe des sockets , je cherche un moyen simple d'émettre (sans répétition) , j'ai déjà fait un interface de réception(en c#) pour un jeu( x-plane) qui émettait via l'UDP .
    J'aurai aimé faire le même principe avec ma dll : émettre en UDP car la mise en œuvre est super simple en .NET
    l'adresse et le port seront codé en dur dans la dll.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    merci pour les liens j'ai commencé à regarder mais à la première ligne j'ai un problème des que j'ajoute
    #include <winsock2.h>
    au début de mon code j'ai un maximum d'erreur dont :
    'fd_set'*: redéfinition du type 'struct' C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winsock2.h 112
    pourtant cette structure n'est déclarée nulle part ailleurs, je ne comprends pas.
    Merci

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    <winsock2.h> doit être inclus avant <windows.h>.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Super ma dll peut envoyer des données via UDP.
    Maintenant il faut que je code mes float en byte[4] avec le codage little-endian et là je m'avoue vaincu car le C n'est pas mon langage habituel, donc si vous avez un bout de code ou un lien je suis preneur.
    Merci

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour coder un float sur un tableau de bytes:
    1. memcpy() du float vers un entier 32 bits (int ou long sous Windows)
    2. codage de l'entier sur le tableau de bytes.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Sinon, les socket
    euh, sur le port série ?
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par sdecorme Voir le message
    Je ne connais pas le C
    Effectivement !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ExampleInternalsPlugin::UpdateTelemetry( const TelemInfoV2 &info )
    c'est pas du C et la suite montre que c'est du mauvais C++. Il sort d'où ce code ?
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Pour coder un float sur un tableau de bytes:
    1. memcpy() du float vers un entier 32 bits (int ou long sous Windows)
    2. codage de l'entier sur le tableau de bytes.
    Huh, ça me parait bien tordu... déjà, passer un float sur le réseau en binaire, c'est casse-g.(qu'y a-t-il en face ?). Je passerais la valeur en mode texte, c'est plus sûr...
    Pas de Wi-Fi à la maison : CPL

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si la transmission est tout en binaire, j'ai plutôt tendance à passer en binaire et prié pour que les deux côtés soient en IEEE754. Je ne fais pratiquement jamais de transmission en mode texte sur le réseau, sauf lors d'un appel de WebServices (et encore, je laisse la bibliothèque sous-jacente s'en occuper).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Un collègue m'a envoyé un bout de code,je sais que ce code marche (car j'ai dèja fait un module de réception en c#)mais je ne sais pas comment l'appeler en c++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    static void WriteFloat(char *buf, int i, float x)
    {
        int xi, j; 
        xi=*((int *)(&x));
        for (j=0;j<4;j++) {
            buf[i++]=(char)(xi & 0xFF);
            xi=xi >> 8;
        }
    }
    ça fonctionne comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char Buf_f1[20];
    float valeur;
    valeur = 1.2343;
    WriteFloat(Buf_f1,valeur);
    Comment je fais pour mettre plusieurs float à la suite dans Buf_1 ?
    Merci

  15. #15
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Effectivement !
    c'est pas du C et la suite montre que c'est du mauvais C++. Il sort d'où ce code ?
    Ce code vient du site web du jeu Rfactor ou il donne un bout de code pour faire des plugin pour le jeu

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Légère modif:
    Code C : 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
    29
    30
    31
    32
    33
    34
    35
    /* Écrit un float simple précision dans le buffer, en little-endian. */
    void WriteFloatLE(
     char *buf,  /*[out/opt] Buffer destination. Sa taille doit faire au moins ((*pi) + sizeof(float)) */
     size_t *pi, /*[in/out] Pointeur vers l'index. */
     float x     /*[in] Float à sérialiser. */
     )
    {
    	int xi;
    	assert(sizeof x == sizeof xi);
     
    	assert(pi != NULL);
    	if(buf != NULL) {
    		size_t j; 
     
    		/* Ce code est moins clair qu'un memcpy(), 
    		   mais si on a absolument besoin de vitesse,
    		   ça peut être plus rapide. */
    		{
    			int const * const pxi = (int const *)(&x);
    			xi = *pxi; 
    		}
     
    		/* Copier dans le buffer, 
    		   en incrémentant l'index au fur et à mesure. */
    		for (j=0 ; j<sizeof xi ; j++) {
    			buf[ *pi ] = (char)(xi & 0x000000FF);
    			(*pi)++;
    			xi >>= 8;
    		}
    	} else {
    		/* S'il n'y a pas de buffer, on incrémente juste l'index
    		   avec la bonne taille. */
    		(*pi) += sizeof xi;
    	}
    }
    Et ça s'emploie ainsi:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    char Buf_f1[20];
    float valeur1 = 1.2343, valeur2=2.3456;
    size_t index = 0;
    WriteFloat(Buf_f1, &index, valeur1);
    WriteFloat(Buf_f1, &index, valeur2);
    Et si on est perfectionniste, on peut ajouter la taille du buffer dans les paramètres, et faire vérifier le non-dépassement par la fonction elle-même...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par sdecorme Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    static void WriteFloat(char *buf, int i, float x)
    {
        int xi, j; 
        xi=*((int *)(&x));
        for (j=0;j<4;j++) {
            buf[i++]=(char)(xi & 0xFF);
            xi=xi >> 8;
        }
    }
    Ce n'est pas portable. Rien ne dit que la taille d'un int soit identique à la taille d'un float.
    Pas de Wi-Fi à la maison : CPL

  18. #18
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    En effet.
    J'ai contourné le problème avec une assertion pour empêcher une erreur silencieuse, mais même cela pourrait causer des problèmes sur une plate-forme où int et float font 64 bits...

    En fait, il faudrait utiliser des types fixés, mais vu qu'il n'y a rien pour ça en C90 et que le code est compilé sous Visual...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  19. #19
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    En fait, il faudrait utiliser des types fixés, mais vu qu'il n'y a rien pour ça en C90 et que le code est compilé sous Visual...
    Par définition, les types de taille fixe de C99 ne sont pas portables.
    Pas de Wi-Fi à la maison : CPL

  20. #20
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 296
    Points : 99
    Points
    99
    Par défaut
    Je reviens vers vous car je voudrais envoyer mon buffer via un port série , je suis plutôt adepte du c# . Est-il possible d'intégrer du c# dans une solution en c++ ?
    Merci

Discussions similaires

  1. Envoyer des données POST à une page web puis récupérer l'URL
    Par Ze moi dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 23/04/2007, 17h18
  2. [PHP-JS] envoyer des données avec un boutton hidden
    Par moonia dans le forum Langage
    Réponses: 22
    Dernier message: 23/06/2006, 16h30
  3. Envoyer des données POST à une page !
    Par wishmastah dans le forum Langage
    Réponses: 11
    Dernier message: 11/04/2006, 19h37
  4. Réponses: 16
    Dernier message: 20/03/2006, 23h21
  5. [format des données avec une procédure stockée]
    Par viny dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 10/03/2005, 13h24

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