我需要在2个jade平台之间传递ACL消息。我实现了我的代码以在同一容器中的代理之间传递消息。效果很好。但我无法开发该代码来在远程平台之间传递消息。
以下是我为同一容器中的代理实现的内容。在发送方代理代码中,result[] 仅获取同一平台中的代理。
我缺少什么?
有没有办法获取远程平台的坐席列表?
发件人代理
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();
}
}
});
Try this
AID r=new AID("agent-name@platform",AID.ISGUID);
r.addAddresses("http://192.168.1.1:7778/acc");
acl.addReceiver(r);
acl.setContent("Hello.!");
this.send(acl);
System.out.println("\nMessage Sent to "+r);
相反,我的本地 IP 使用您自己的 IP 或主机名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)