Client

 
package examples.jsp; 

import java.io.*; 
import java.awt.*; 
import javax.swing.*; 
import java.awt.event.*; 

import jade.core.*; 
import jade.core.behaviours.*; 
import jade.lang.acl.ACLMessage; 
import jade.lang.acl.MessageTemplate; 

public class Client extends Agent {
    // Used to display the messages 
    private JTextArea result; 

    public Client() { 
    result = new JTextArea(); 
    } 

    /** 
     * Wait for a message from the buffer. Confirm the reception. 
     */ 
    class MyBehaviour extends CyclicBehaviour {
    private MessageTemplate m1; 

    public MyBehaviour(Agent a) { 
        super(a); 
        m1 = MessageTemplate.MatchPerformative(ACLMessage.INFORM); 
    } 

    public void action() { 
        // Wait for a message from the Buffer 
        ACLMessage msg = receive(m1); 
        if (msg!= null){ 
        // display the message 
        result.append(msg.getContent()); 
        // confirm that the message has been received. 
        ACLMessage reply = msg.createReply(); 
        reply.setPerformative(ACLMessage.CONFIRM); 
        send(reply); 
        } else { 
        block(); 
        } 
    } 
    } 

    protected void unsubscribe() {
    ACLMessage msg = new ACLMessage(ACLMessage.CANCEL); 
    // JADE 2.3 
    msg.addReceiver(new AID("buffer",AID.ISLOCALNAME)); 
    // JADE 2.0: 
    // msg.addReceiver(new AID("buffer@"+getHap())); 
    // JADE 1.4: 
    //msg.addDest("buffer"); 
    send(msg); 
    } 

    protected void setup() {
    addBehaviour(new MyBehaviour(this));
    // create a GUI that display the messages 
    JFrame frame = new JFrame("Snooper client"); 
    // When the window is closed, unsubscribe from the buffer. 
    frame.addWindowListener(new WindowAdapter() { 
        public void windowClosing(WindowEvent we) {
            unsubscribe(); 
            doDelete(); 
            System.exit(0);  
            // kill all the container because there is also 
            // 1 client running. 
            // doDelete(); 
        } 
        }); 
    JScrollPane scp = new JScrollPane(); 
    scp.getViewport().add(result); 
    frame.getContentPane().add(scp); 
    frame.setSize(300,200); 
    frame.setVisible(true); 
     
    // ask to the buffer stored messages. 
    ACLMessage msg = new ACLMessage(ACLMessage.REQUEST); 
    // JADE 2.3 
    msg.addReceiver(new AID("buffer",AID.ISLOCALNAME)); 
    // JADE 2.0: 
    // msg.addReceiver(new AID("buffer@"+getHap())); 
    // JADE 1.4: 
    //msg.addDest("buffer"); 
    send(msg); 
    } 
}