操作系统  办公  实用知识  设计  开发  WEB开发  移动开发  数据库  软件工程  网管  安全  管理  信息化  答疑  渠道 

JADE:远程机器的Agent通信应注意的问题

2007-9-27 网友评论 0 条 点击进入论坛

  要实现局域网内不同机器上的Agent进行通信,需要注意这样两个问题:

  1。防火墙内关于文件与打印机共享的协议必须打开,保证机器名的解析。

  2。通信时ACLMessage添加Receiver的时候指定合法的AID,这个AID一要有完整的名称,二要有合法的Addresses。

  比如下面的例子

  import jade.core.AID;

  import jade.domain.AMSService;

  import jade.domain.FIPAAgentManagement.*;

  public class Sender2 extends Agent {

  protected void setup()

  {

  AMSAgentDescription [] agents = null;

  AID Rams= new AID("ams@gjpc:1099/JADE");//获取gjpc机器上的ams

  Rams.addAddresses("http://gjpc:7778/acc");

  try {

  SearchConstraints c = new SearchConstraints();

  c.setMaxResults (new Long(-1));

  //agents = AMSService.search( this, new AMSAgentDescription (), c );

  //下面查找rams里面的agents

  agents = AMSService.search( this, Rams, new AMSAgentDescription (), c );

  }

  catch (Exception e) {

  System.out.println( "Problem searching AMS: " + e );

  e.printStackTrace();

  }

  ACLMessage msg = new ACLMessage(ACLMessage.INFORM);

  msg.setContent( "this is from guojie 's Ping" );//本地机器名为guojie

  //逐个向他们发送消息

  for (int i=0; i

  if ( agents[i].getName().equals(getAID()) ){

  continue;

  }

  System.out.println(agents[i].getName().toString());

  agents[i].getName().addAddresses("http://gjpc:7778/acc");

  //这一句必须要有

  msg.addReceiver( agents[i].getName() );

  }

  System.out.println("wait fro a minute...");

  send(msg);

  }

  }

已有 0 位对此文章感兴趣的网友发布了看法    
我来评两句 登录邮箱: 密码:
  匿名发表
今日推荐
技术文库(共有 46430 篇文章)
操作系统
办公软件
实用知识
网络管理
软件开发
WEB开发
软件工程
数据库
设计在线
信息安全
行业信息化
管理信息化
重点推荐
电子杂志订阅
点击电子杂志名称查看样刊
输入E-mail地址即可订阅
E-mail