gpt4 book ai didi

java - 无法通过 JADE 在 android 中接收 ACLMessage

转载 作者:行者123 更新时间:2023-11-29 21:52:25 26 4
gpt4 key购买 nike

我目前正在使用 JADE 使用基于主题的通信。我可以使用 jade.core.messaging.TopicManagementFEService 注册一个 JADE 代理,从而连接到同一平台中的主容器。

详情如下:

  1. Main-Container:托管 Main-Container 的简单 LAMP/WAMP 服务器。
  2. 客户端:用于连接到主容器的 Android 模拟器(测试目的)。

目前,

  1. 服务器启动主容器
  2. Android 模拟器成功连接到主容器(创建代理并启用主题管理服务)
  3. 服务器正在发送基于特定主题的消息。

但是我的Android客户端收不到这个消息,虽然两端注册的topic是一样的!

你可以看到下面的代码:

服务器端:

TopicManagementHelper topicHelper = (TopicManagementHelper) getHelper(TopicManagementHelper.SERVICE_NAME);
final AID sensorTopic = topicHelper.createTopic("JADE");
topicHelper.register(sensorTopic);

addBehaviour(new TickerBehaviour(this, TIMER_VALUE_IN_MILLISECONDS) {

private static final long serialVersionUID = -2567778187494378326L;

public void onTick() {

ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
msg.addReceiver(eventTopic);
msg.setContent(eventValue);
myAgent.send(msg);
}
});

安卓端:

// Registering on Android Side as well
TopicManagementHelper topicHelper = (TopicManagementHelper) getHelper(TopicManagementHelper.SERVICE_NAME);
topic = topicHelper.createTopic("JADE"); // See, same topic!
topicHelper.register(topic);

behaviour = new myBehaviour(this, TIMER_VALUE_IN_MILLISECONDS, topic);
addBehaviour(behaviour);

private class myBehaviour extends TickerBehaviour {

private static final long serialVersionUID = 4782913834042415090L;
AID topic;
Agent agent;
MessageTemplate tpl;

public myBehaviour(Agent a, long period, AID topic) {
super(a, period);

this.agent = a;
this.topic = topic;
}

public void onTick() {
tpl = MessageTemplate.MatchTopic(topic);
ACLMessage msg = receive(tpl);
if (msg != null) {
logger.log(Level.INFO, "Agent "+ agent.getLocalName() +
": Message about topic "+ topic.getLocalName() +" received. \n" +
"Content is " + msg.getContent());
data = msg.getContent();

} else {
logger.log(Level.INFO, "In here..."); // Always executes only this code!
block();
}
}
}

我哪里错了?它总是在 Android 端执行 else 部分,这显然是说收到的消息是 NULL!

最佳答案

没关系。逻辑错了。 Android-Agent 没有向 Central-Agent 表明自己的身份。

我设置本体,以便中央代理能够识别此类消息并相应地发送消息。现在,它正在接收消息!

自助有时会奏效! ;-)

关于java - 无法通过 JADE 在 android 中接收 ACLMessage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com