在接收消息时获取JADE代理地址

时间:2014-09-01 10:35:16

标签: java agents-jade

我正在使用jade开发和应用程序,您可以在计算机之间进行通信。我想知道的是如何获取在接收消息时发送消息的代理的地址,并希望在带有消息的“else”的sysout语句中显示。

protected void setup(){ 
        super.setup();

        //receiving message
        addBehaviour(new CyclicBehaviour(this){
            public void action() {
                ACLMessage msg= receive();

                if (msg!=null){
                    String s =  msg.getContent();
                    String os, browser, tool, agentName, finalVal;

                    String[] elements = s.split(":");

                    if(elements.length > 0){
                        if(elements[0].equals("property_file")){
                            String[] property = new String[elements.length-1];

                            for(int i = 1; i < elements.length; i++){
                                property[i-1] = elements[i];
                                System.out.println(property[i-1]);
                            }
                            os = property[0];
                            browser = property[1];
                            tool = property[2];
                            agentName = msg.getSender().getName();
                            finalVal = agentName + ":" + os + ":" + browser + ":" + tool;

                            CreateText cret = new CreateText();
                            cret.writeText(finalVal);
                        }else{
                            System.out.println( "<=" + myAgent.getLocalName() + " gets reply \"" + msg.getContent() + "\" sent by " + msg.getSender().getLocalName() + '\n');
                            sendRep(msg);
                        }
                    }
                    block();
                }
            }
        });
    }

格式if地址将类似于“http://Vithushan@home.com:7778/acc”并且必须使用,如果我想稍后发送消息。功能将是这样的。在这里,我已经硬编码了地址的价值。

public void sendMessage(String message){        
        ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
        AID r = new AID("someName@superContainer ", AID.ISGUID);
        //r.addAddresses("http://Vithushan@home.com:7778/acc");

        msg.setContent(message);
        msg.addReceiver(r);
        send(msg);              
    }

1 个答案:

答案 0 :(得分:1)

终于找到了答案。

ACLMessage msg= receive();
String[] addressArr = msg.getSender().getAddressesArray();
System.out.println(addressArr[0]);

数组的第一个元素将具有我们从

接收消息的代理的地址值