我正在使用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);
}
答案 0 :(得分:1)
终于找到了答案。
ACLMessage msg= receive();
String[] addressArr = msg.getSender().getAddressesArray();
System.out.println(addressArr[0]);
数组的第一个元素将具有我们从
接收消息的代理的地址值