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

Programmation par agent Java Discussion :

Les communications des agents JADE [Tutoriel]


Sujet :

Programmation par agent Java

  1. #101
    Expert confirmé

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Par défaut
    Jade n'est pas destiné à un seul type d'agent, il te fournit un ensemble d' "outils" et c'est à toi de les utiliser pour développer des agents cognitifs

    PS: je n'ai travaillé que sur des agents réactifs

  2. #102
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par Djug Voir le message
    Bonjour,

    voici un article sur Les communications des agents JADE

    http://djug.developpez.com/java/jade/communication/


    vos remarques sont les bienvenues.
    bonjour
    merci pour les tutoriels de création d'agent et de comportement j'ai bien exécuté le code.pour la communication l'agent A est bien lance et il est en attente de l'agent B.je n'arrive pas a lancer l'agent B.
    merci de m'aider

  3. #103
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    bonjour
    comment sont géré les conditions dans jade
    es qu'il propose une base de règle ou base de fait
    merci

  4. #104
    Expert confirmé

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Par défaut
    .je n'arrive pas a lancer l'agent B.
    tu le lance à partie de la ligne de commande , ou directement à partir du GUI du JADE ,mais il faut que les classe de ton agents sont dans un dossier dont le chemin fait partie de la variable d'environnement classpath,
    en d'autre terme, si les classe de l'agent sont dans le dossier c:\AgentLand il faut ajouter se chemin à la variable d'environnement classpath


    j'ai pas compris ta 2e question

  5. #105
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par Djug Voir le message
    tu le lance à partie de la ligne de commande , ou directement à partir du GUI du JADE ,mais il faut que les classe de ton agents sont dans un dossier dont le chemin fait partie de la variable d'environnement classpath,
    en d'autre terme, si les classe de l'agent sont dans le dossier c:\AgentLand il faut ajouter se chemin à la variable d'environnement classpath
    bonjour
    es qu'il faut que les deux agents A et B soient dans le même dossier pour qu'ils puissent envoyer et recevoir des messages
    parce que l'agent A est bien lance et il est en attente de l'agent B. mon problème est comment lance deux agent agents au même temps
    merci
    Citation Envoyé par Djug Voir le message
    j'ai pas compris ta 2e question
    je veux dire les connaissances d'un agent comment sont présenté es que sous forme de règle de production
    exemple si agent X fournit une offre avec un prix minimale alors agent Y accepte cet offre
    merci

  6. #106
    Expert confirmé

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Par défaut
    les deux agents ne doivent pas forcement être sur le même dossier,

    comme je te l'ai déja dis, tu peux lancer une centaines d'agents en parallèle ou bien par la ligne de commande :

    java jade.Boot -container nomAgent:ClassAgnet
    ou directement à partir du GUI du JADE



    PS: il se peux que la commande ci dessus soit erronée, j'ai pas travaillé avec JADE depuis plus d'une année, et je l'ai pas actuellement sur ma machine

  7. #107
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par Djug Voir le message
    les deux agents ne doivent pas forcement être sur le même dossier,

    comme je te l'ai déja dis, tu peux lancer une centaines d'agents en parallèle ou bien par la ligne de commande :



    ou directement à partir du GUI du JADE



    PS: il se peux que la commande ci dessus soit erronée, j'ai pas travaillé avec JADE depuis plus d'une année, et je l'ai pas actuellement sur ma machine
    comment je le lance a partir de la GUI
    je suis très débutant en jade

  8. #108
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 7
    Par défaut
    Citation Envoyé par Djug Voir le message
    Jade n'est pas destiné à un seul type d'agent, il te fournit un ensemble d' "outils" et c'est à toi de les utiliser pour développer des agents cognitifs

    PS: je n'ai travaillé que sur des agents réactifs
    bonjour
    c.a.d le développement des agents cognitifs et agents réactifs se différent au niveau de la programmation de l'agent?
    merci

  9. #109
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par achref s Voir le message
    comment je le lance a partir de la GUI
    je suis très débutant en jade
    j'ai essaye de lancer l'agent B a partir de la GUI mais j'ai pas réussi a le faire
    pouvez vous me dire comment

  10. #110
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    bonjour,
    j'ai réussi à exécuter l'exemple de communication des agents en utilisant un agent lanceur.maintenant je veux qu'un agent A pose une question à l'agent B
    et l'agent B répond à cette question.
    le code de l'agent A est le suivant:
    public class AgentA extends Agent {
    String question = (String)("");
    public void setup(){
    ACLMessage message = new ACLMessage(ACLMessage.INFORM);
    message.addReceiver(new AID("AgentB",AID.ISLOCALNAME));
    message.setContent(question);
    send(message);
    doDelete();
    }}
    le code de l'agentB est le suivant:
    public class AgentB extends Agent {
    String reponse = (String)("");
    public void setup(){
    ACLMessage messageRecu = receive();
    ACLMessage message = new ACLMessage(ACLMessage.INFORM);
    message.addReceiver(messageRecu.getSender());
    message.setContent(reponse);
    send(message);
    doDelete();
    }}
    resultat:
    Uncaught Exception for agent AgentB ***
    java.lang.NullPointerException
    at collaboration.AgentB.setup(AgentB.java:13)
    at jade.core.Agent$ActiveLifeCycle.init(Agent.java:1490)
    at jade.core.Agent.run(Agent.java:1436)
    at java.lang.Thread.run(Unknown Source)
    ERROR: Agent AgentB died without being properly terminated !!!
    State was 2

  11. #111
    Expert confirmé

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Par défaut
    j'ai quelques petites remarques qui peuvent t'aider à résoudre le problème:

    l'instruction :

    va tuer l'agent A des l'envoi du message donc il ne peux pas recevoir la réponse

    l'agent B exécute tous son code et n'attend pas l'arrivé du message; voici comment le faire:
    http://djug.developpez.com/java/jade/communication/#LV


    il faut lancer l'agent B avant l'agent A ,parce que l'agent B va contenir l'instruction
    qui l'oblige à attendre, contrairement à l'agent A qui va envoyé le message avant même la création de l'agent B, donc il sera perdu

  12. #112
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    bonjour
    j'ai enlevé la méthode doDelete() de l'agent A et j'ai ajouté la méthode block() à l'agent B.mais comment je lance l'agent B avant l'agent A
    merci

  13. #113
    Expert confirmé

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Par défaut
    Citation Envoyé par achref s Voir le message
    bonjour
    j'ai enlevé la méthode doDelete() de l'agent A et j'ai ajouté la méthode block() à l'agent B.mais comment je lance l'agent B avant l'agent A
    merci
    avec les deux commandes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java jade.Boot -container AgentB:AgentB
    java jade.Boot -container AgentA:AgentA

  14. #114
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    Citation Envoyé par Djug Voir le message
    avec les deux commandes suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    java jade.Boot -container AgentB:AgentB
    java jade.Boot -container AgentA:AgentA
    bonsoir,
    j'ai modifié les codes d'exemple de communication des agents pour que l'agent A pose une question et l'agent B répond à cette question. j'ai utilisé un agent lanceur qui va lancer mes agents.voilà le code de mes agents:
    package compA;



    import jade.core.AID;
    import jade.core.Agent;
    import jade.core.behaviours.FSMBehaviour;
    import jade.core.behaviours.OneShotBehaviour;
    import jade.lang.acl.ACLMessage;

    public class Seq1 extends Agent {

    protected void setup(){

    System.out.println("---------------------------------------");
    System.out.println("----------------Seq1----------------");
    System.out.println("---------------------------------------");

    FSMBehaviour Seq1_beh= new FSMBehaviour();

    Seq1_beh.registerFirstState(new attendreSeq2(), "attendreSeq2");
    Seq1_beh.registerState(new envoiQuestion(), "envoiQuestion");
    //Seq1_beh.registerState(new attendrereponse(), "attendrereponse");
    Seq1_beh.registerLastState(new fin(), "fin");

    Seq1_beh.registerDefaultTransition("attendreSeq2", "envoiQuestion");
    Seq1_beh.registerTransition("envoiQuestion","attendreSeq2",0);
    //Seq1_beh.registerTransition("envoiQuestion","attendrereponse",1);
    Seq1_beh.registerTransition("attendreSeq2", "fin", 2);

    addBehaviour(Seq1_beh);
    }

    private class attendreSeq2 extends OneShotBehaviour{

    @Override
    public void action() {

    System.out.println("en attente de l agent Seq2");
    block();
    }
    }
    /*****************************************************************/




    private class envoiQuestion extends OneShotBehaviour{

    int valeurRetour = 0;
    @Override
    public void action() {

    ACLMessage messageRecu = receive();
    if (messageRecu.getContent().equalsIgnoreCase("pret") ) valeurRetour=0;
    else valeurRetour=1;

    String question = (String)("..............");
    System.out.println("envoi de la question= "+ question);
    ACLMessage message = new ACLMessage(ACLMessage.INFORM);
    message.addReceiver(messageRecu.getSender());
    message.setContent(question+"");
    send(message);
    }

    public int onEnd(){
    return valeurRetour;
    }
    }
    /*****************************************************************/
    private class fin extends OneShotBehaviour{

    @Override
    public void action() {
    System.out.println("arret de l'agent");
    myAgent.doDelete();
    }
    }
    }

    package compA;


    import java.security.acl.Acl;
    import jade.core.AID;
    import jade.core.Agent;
    import jade.core.behaviours.FSMBehaviour;
    import jade.core.behaviours.OneShotBehaviour;
    import jade.lang.acl.ACLMessage;

    public class Seq2 extends Agent {


    boolean stop = false;
    protected void setup(){
    System.out.println("----------------Seq2----------------");
    FSMBehaviour Seq2_beh= new FSMBehaviour();

    Seq2_beh.registerFirstState(new attendrequestion(), "attendrequestion");
    Seq2_beh.registerState(new afficher(), "afficher");
    Seq2_beh.registerState(new fin(), "fin");

    Seq2_beh.registerTransition("attendrequestion", "afficher",0);
    Seq2_beh.registerTransition("attendrequestion", "fin",1);
    Seq2_beh.registerDefaultTransition("afficher", "attendrequestion");

    addBehaviour(Seq2_beh);
    }
    private class attendrequestion extends OneShotBehaviour{

    int valeurRetour = 0;

    public void action() {
    ACLMessage message = new ACLMessage(ACLMessage.INFORM);
    message.addReceiver(new AID("Seq1", AID.ISLOCALNAME));

    if(!stop){
    message.setContent("pret");
    send(message);
    valeurRetour=0;
    block();
    }else{
    message.setContent("arret");
    send(message);
    valeurRetour=1;
    }
    }
    public int onEnd(){
    return valeurRetour;
    }
    }
    /**********************************************************************/
    private class afficher extends OneShotBehaviour{
    @Override
    public void action() {
    ACLMessage messageRecu = receive();
    String reponse=(String)("..............") ;
    ACLMessage message = new ACLMessage(ACLMessage.INFORM);
    message.setContent(reponse);

    send(message);
    System.out.println("la reponse = "+reponse);
    stop=true;
    }
    }
    /**********************************************************************/
    private class fin extends OneShotBehaviour{
    @Override
    public void action() {
    System.out.println("fin de l'agent");
    myAgent.doDelete();
    }
    }
    }

    j'ai obtenu le résultat suivant:
    l'agent SimpleAgent va lancer les deux agents AgentA et AgentB
    ---------------------------------------
    ----------------Seq1----------------
    ---------------------------------------
    en attente de l agent Seq2
    ----------------Seq2----------------
    envoi de la question= ..............
    en attente de l agent Seq2
    la reponse = ..............
    envoi de la question= ..............
    fin de l'agent
    ERROR: Agent Seq1 died without being properly terminated !!!
    State was 2
    21 déc. 2010 19:37:04 jade.core.messaging.MessagingService boot
    INFO: MTP addresses:
    http://sweet-74721f200.lan:2211/acc
    21 déc. 2010 19:37:04 jade.core.AgentContainerImpl joinPlatform
    INFO: --------------------------------------
    Agent container Container-1@192.168.1.64 is ready.
    --------------------------------------------
    *** Uncaught Exception for agent Seq1 ***
    java.lang.RuntimeException: Inconsistent FSM. State: envoiQuestion event: 1
    at jade.core.behaviours.FSMBehaviour.handleInconsistentFSM(FSMBehaviour.java:377)
    at jade.core.behaviours.FSMBehaviour.scheduleNext(FSMBehaviour.java:369)
    at jade.core.behaviours.CompositeBehaviour.action(CompositeBehaviour.java:96)
    at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344)
    at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1500)
    at jade.core.Agent.run(Agent.java:1439)
    at java.lang.Thread.run(Unknown Source)
    merci de m'aider

  15. #115
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 14
    Par défaut
    bonjour
    es que la seule méthode d'échanger des message entre les agents est d'utiliser les FSMBehaviour?
    merci

  16. #116
    Expert confirmé

    Avatar de Djug
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    2 980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Algérie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 980
    Par défaut
    Citation Envoyé par achref s Voir le message
    bonjour
    es que la seule méthode d'échanger des message entre les agents est d'utiliser les FSMBehaviour?
    merci
    FSMBehaviour concerne les comportement des agents et non pas la communication,
    oui, il est possible d'utiliser des FSMBehaviour pour mettre en œuvre une série d'échanges entre les agents, mais tu peux également utiliser l'un des protocoles de communication/ négociation entre les agents (jet un coup d'œil sur la documentation officielle pour plus d'informations)

  17. #117
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut Exemple de code
    Bonjour,
    Vous trouverez à cette adresse un exemple simpliste de déploiement d'une plateforme en local (4 agents, 1+3 conteneurs, 1 agent envoie un message et 1 autre l'attrape) avec des simpleBehaviours. Le code n'est pas beau, mais il essaye d'aller à l'essentiel. Le tout, directement depuis Eclipse.

    http://www-desir.lip6.fr/~herpsonc/d...romEclipse.zip

    En espérant que cela vous soit utile.

  18. #118
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 11
    Par défaut Block(), l'agent n'attend pas le message
    Bonjour,

    Je me suis basé sur l'exemple des 2 agents qui communiquent (agentA, agentB) pour résoudre le problème du voyageur de commerce

    AgentA exécute un algorithme génétique, et AgentB execute le Recuit Simulé.
    Ces 2 algorithmes doivent s'executer l'un apres l'autre.

    Lorsqu'un agent à terminé l'éxécution de son algo, il envoie un message à l'autre agent, qui peut alors executer le sien.

    Le probleme est que lorsque j'utilise la fonction block(), il n'attend pas de recevoir un message. Donc j'ai un java.lang.NullPointerException.

    Comment marche cette fonction block() ?
    est ce qu'il faut refaire un message = receive() juste après ?

    Est ce que ca veut dire que l'agent a bien reçu un message, mais qu'il n'arrive pas à le lire ?

    Merci d'avance pour vos conseils


    EDIT :j'ai réussi à "corriger" le probleme, avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                ACLMessage messageRecu = receive();
                while (messageRecu == null) {
                    block();
                    messageRecu = receive();
                }

  19. #119
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Par défaut agent mobile visite 2 container puis fait retour
    Citation Envoyé par Djug Voir le message
    je viens de testé ton code, il fonctionne bien:

    je crois que tu n'a pas encore compris la notion des Container et comment les agents s'exécutent

    voici comment exécuter ton exemple:

    compiler le code de l'agent, tu va récupérer le résultat de la compilation (les fichiers Agent1.class et Agent1$B.class)

    copier ces fichier vers un dossier dont le chemin apartien à la varible classpath du systeme : par exemple tu va créer un dossier ayant comme nom C:\AgentLand et tu va ajouter ce chemin à la variable classpath du systeme (clique droit sur le poste de travaille >propriétés >avancé> variable d'environnement > double clique sur classpath puis tu rajoutes à la fin du contenu de la variable ;C:\AgentLand (remarque bien le point virgule avant le chemin du dossier)

    lancer la plateforme jade via la commande:

    lancer un nouveau container via la commande (il sera nommé automatiquement container-1 le prochain container sera nommé Container-2 ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java jade.Boot -container
    lancer l'agent agent1 comme suit:

    clique droit sur Main-container > Start new Agent

    taper agent1 dans les champ agent name et agent class

    l'agent se lancera puis se se placera vers le container container-1 puis se terminera (tous va se passer rapidement)

    tu trouvera la trace de son déplacement sur le fenêtre console (fenêtre dos)
    salut
    Merci pour ton aide,Désolé mais Agent1$B.class ?
    et si mon agent visite 2 container comment le faire comme commande et argument ?
    vraiment Merci msr djug infiniment

  20. #120
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Par défaut
    Citation Envoyé par Djug Voir le message
    je viens de testé ton code, il fonctionne bien:

    je crois que tu n'a pas encore compris la notion des Container et comment les agents s'exécutent

    voici comment exécuter ton exemple:

    compiler le code de l'agent, tu va récupérer le résultat de la compilation (les fichiers Agent1.class et Agent1$B.class)

    copier ces fichier vers un dossier dont le chemin apartien à la varible classpath du systeme : par exemple tu va créer un dossier ayant comme nom C:\AgentLand et tu va ajouter ce chemin à la variable classpath du systeme (clique droit sur le poste de travaille >propriétés >avancé> variable d'environnement > double clique sur classpath puis tu rajoutes à la fin du contenu de la variable ;C:\AgentLand (remarque bien le point virgule avant le chemin du dossier)

    lancer la plateforme jade via la commande:

    lancer un nouveau container via la commande (il sera nommé automatiquement container-1 le prochain container sera nommé Container-2 ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java jade.Boot -container
    lancer l'agent agent1 comme suit:

    clique droit sur Main-container > Start new Agent

    taper agent1 dans les champ agent name et agent class

    l'agent se lancera puis se se placera vers le container container-1 puis se terminera (tous va se passer rapidement)

    tu trouvera la trace de son déplacement sur le fenêtre console (fenêtre dos)
    Bonjour à tous;
    OK j'ai suivi tout ces étapes mais j'ai le même problème !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     gent container Main-Container@super-com-PC is ready.
    -------------------------------------------
    ello
     
     
    oving ...
     avr. 2011 08:14:42 jade.core.mobility.AgentMobilityService$CommandSourceSink h
    ndleInformMoved
    RAVE: Destination Container-1 does not exist or does not support mobility
    he agent has terminated its itinirary
    Mais j'ai déja
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     INFO: --------------------------------------
    Agent container Container-1@super-com-PC is ready.
    --------------------------------------------
    Quelqu'un peut me dis ou le problème S.V.P !! ?

Discussions similaires

  1. Communication entre des agents jade
    Par Nouur dans le forum Programmation par agent
    Réponses: 0
    Dernier message: 29/04/2014, 00h39
  2. Communication entre des agents jade
    Par Nouur dans le forum Programmation par agent
    Réponses: 0
    Dernier message: 29/04/2014, 00h36
  3. Pour les fanas des Agents
    Par carla-la-belle dans le forum Windows 7
    Réponses: 2
    Dernier message: 12/11/2009, 14h51

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