2014-09-01 2 views
0

컴퓨터간에 통신 할 수있는 jade를 사용하여 개발 중이며 응용 프로그램을 사용 중입니다. 내가 알고 싶은 것은 메시지를 수신하는 동안 메시지를 보내는 에이전트의 주소를 얻는 방법이며 메시지와 함께 "else"에 sysout 문을 표시하려고합니다. 나중에 메시지를 보내려면 주소가 "http://[email protected]:7778/acc"같은 것을하고 사용해야합니다 경우메시지 수신 중 JADE 에이전트 주소 받기

protected void setup(){ 
     super.setup(); 

     //receiving message 
     addBehaviour(new CyclicBehaviour(this){ 
      public void action() { 
       ACLMessage msg= receive(); 

       if (msg!=null){ 
        String s = msg.getContent(); 
        String os, browser, tool, agentName, finalVal; 

        String[] elements = s.split(":"); 

        if(elements.length > 0){ 
         if(elements[0].equals("property_file")){ 
          String[] property = new String[elements.length-1]; 

          for(int i = 1; i < elements.length; i++){ 
           property[i-1] = elements[i]; 
           System.out.println(property[i-1]); 
          } 
          os = property[0]; 
          browser = property[1]; 
          tool = property[2]; 
          agentName = msg.getSender().getName(); 
          finalVal = agentName + ":" + os + ":" + browser + ":" + tool; 

          CreateText cret = new CreateText(); 
          cret.writeText(finalVal); 
         }else{ 
          System.out.println("<=" + myAgent.getLocalName() + " gets reply \"" + msg.getContent() + "\" sent by " + msg.getSender().getLocalName() + '\n'); 
          sendRep(msg); 
         } 
        } 
        block(); 
       } 
      } 
     }); 
    } 

형식입니다. 함수는 다음과 같습니다. 여기에 주소 값을 하드 코딩했습니다.

public void sendMessage(String message){   
     ACLMessage msg = new ACLMessage(ACLMessage.INFORM); 
     AID r = new AID("[email protected] ", AID.ISGUID); 
     //r.addAddresses("http://[email protected]:7778/acc"); 

     msg.setContent(message); 
     msg.addReceiver(r); 
     send(msg);    
    } 

답변

1

마지막으로 이에 대한 답변을 찾았습니다.

ACLMessage msg= receive(); 
String[] addressArr = msg.getSender().getAddressesArray(); 
System.out.println(addressArr[0]); 
우리

로부터 메시지를 수신 에이전트의 주소 값을 가질 것이다 어레이의 첫번째 엘리먼트