1
我需要在2個玉石平臺之間傳遞ACL消息。我實現了我的代碼,在同一個容器中的代理之間傳遞消息。這工作正常。但我無法開發該代碼以在遠程平臺之間傳遞消息。在玉石遠程平臺之間傳遞ACL消息
下面是我在同一個容器中爲代理實現的。在發件人代理程序代碼中,結果[]僅獲取同一平臺上的代理程序。
我錯過了什麼? 是否有任何方法可以獲取遠程平臺上的代理列表?
發件人劑
DFAgentDescription temp = new DFAgentDescription();
try
{
//DFAgentDescription[] result = DFService.search(this,temp);
SearchConstraints sc = new SearchConstraints();
DFAgentDescription[] result=DFService.search(this,temp,sc);
ACLMessage acl = new ACLMessage(ACLMessage.REQUEST);
System.out.println("Agents: ");
for(int i=0;i<result.length;i++)
{
if(result[i].getName().getLocalName().equalsIgnoreCase("R1"))
{
acl.addReceiver(result[i].getName());
System.out.print(" , "+result[i].getName().getLocalName());
}
}
acl.setContent("Hello...");
this.send(acl);
System.out.println("Message Sent...");
}
catch(FIPAException e)
{
System.out.println("Error !: "+e);
}
接收機劑
addBehaviour(new CyclicBehaviour()
{
public void action()
{
ACLMessage msg = myAgent.receive();
if(msg != null)
{
if(msg.getPerformative()== ACLMessage.REQUEST)
{
String content = msg.getContent();
if ((content != null))
{
System.out.println("Received Request from "+msg.getSender().getLocalName());
System.out.println("Received Message : "+content);
}
else
{
block();
}
}
}
else
{
block();
}
}
});
它的工作!...非常感謝你。 – Dini88
agent-name @ platform它是發件人還是收件人的代理人姓名? –
是的,它是代理人的本地名稱。 –