1

JADE を使用してエージェント システムを作成します。サーバーとクライアントの 2 つのプログラムを作成しました。

サーバ:

Runtime runtime = Runtime.instance(true);
Profile profile = new ProfileImpl();
jade.wrapper.AgentContainer agentcontainer =
    runtime.createMainContainer(profile);
agentcontainer.createNewAgent(
    "server", "MASServer.CenterAgent", new object[] { this }).start();

サーバーの動作:

ACLMessage AclAnswer = new ACLMessage(ACLMessage.INFORM);
AclAnswer.setContent("From server:helllo");
AID recei = new AID("client", AID.ISLOCALNAME);
AclAnswer.addReceiver(recei);
agent.send(AclAnswer);

クライアント:

Profile profile = new ProfileImpl(false);
profile.setParameter(ProfileImpl.MAIN_HOST, "myhostaddress");
Runtime runtime = Runtime.instance();
jade.wrapper.AgentContainer secondaryContainer =
     runtime.createAgentContainer(profile);
secondaryContainer.createNewAgent(
    "client", "MASClient.CenterAgent", new object[] { this }).start();

クライアントの動作:

ACLMessage AclAnswer = new ACLMessage(ACLMessage.INFORM);
AclAnswer.setContent("From client:helllo");
AID recei = new AID("server", AID.ISLOCALNAME);
AclAnswer.addReceiver(recei);
agent.send(AclAnswer);

サーバー プログラムとクライアント プログラムが同じコンピューター上で実行されている場合、問題なく動作します。

サーバーがコンピューター A で実行され、クライアントがコンピューター B で実行されている場合、クライアントは ACLMessage をサーバーに送信できますが、サーバーは ACLMessage をクライアントに送信できません。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

ここで問題ありませんか?

new AID("server", AID.ISLOCALNAME);

クライアントとサーバーが異なるコンピューター上にある場合、エージェントのグローバルで一意の名前を使用しないでください ( AID.ISGUID) ?

于 2014-11-20T14:51:01.440 に答える