⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 agentreceiver.java

📁 《移动Agent技术》一书的所有章节源代码。
💻 JAVA
字号:
package examples.receivers;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import jade.core.*;
import jade.core.behaviours.*;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import java.util.*;
import java.sql.*;


public class AgentReceiver extends Agent {

  class my3StepBehaviour extends SimpleBehaviour {

  	final int FIRST = 1;
  	final int SECOND = 2;
  	final int THIRD = 3;
         int begin;
	String jyjg,jygs;
	String url="jdbc:odbc:gpjy";
	
  	private int state = FIRST;
  	private boolean finished = false;
    
    public my3StepBehaviour(Agent a) {
      super(a);
    }

    public void action() {
     while(true)
     {
     	 switch (state){
      	case FIRST: {if (op1()) state = SECOND; else  state= FIRST; break;}
      	case SECOND:{op2(); finished=true; break;}
      	     	
      }
      }//end while
    }

    public boolean done() {
      return finished;
    }

    
    private boolean op1(){
    		  

    	MessageTemplate m1 = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
    	MessageTemplate m2 = MessageTemplate.MatchLanguage("PlainText");
    	MessageTemplate m1andm2 = MessageTemplate.and(m1,m2);
    	System.out.println( "\nAgent "+getLocalName()+" in state FIRST.op1 is waiting for a message matching the template ");    	
    	//The agent waits for a specific message. If it doesn't arrive the behaviour is suspended until a new message arrives.
    	ACLMessage msg = receive(m1andm2);
    	
    	if (msg!= null){
    		System.out.println("\nAgent "+ getLocalName() + " received the following message in state FIRST.op1: ");
		
		System.out.println(msg.toString());
    		return true;
    	}
    	else 
    		{
    			System.out.println("\nNo message matching the template received in state FIRST.op1. Blocking the behaviour");
    			block();
    			return false;
    		}
	
    }
    
    private void op2(){
  
    	System.out.println("\nAgent "+ getLocalName() + " in state SECOND.op2 is waiting for any message in next 5000 msec");
    	
    	//Using a blocking receive causes the block of all the behaviours
    	ACLMessage msg = blockingReceive(50000);
    	if(msg != null) {
    	System.out.println("\nAgent "+ getLocalName() + " received the following message in state SECOND.op2: ");
	String tempStr=(msg.getContent()).toString();
	System.out.println(tempStr);
	begin=tempStr.indexOf(",");
	jyjg=tempStr.substring(0,begin);
	jygs=tempStr.substring(begin+1);
	//........................................................
	

                  
      try{
      System.out.println(jyjg);
	System.out.println(jygs);
	Thread.sleep(5000);
	
             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             Connection con=DriverManager.getConnection(url,"sa","");
                             
             DatabaseMetaData dma=con.getMetaData();
             
             System.out.println("\n Connected to " + dma.getURL());
             System.out.println("Driver          "+dma.getDriverName());
             System.out.println("Version     "+dma.getDriverVersion());
             System.out.println("");
       

                  
                  Statement stmt=con.createStatement();
                  PreparedStatement pstmt=con.prepareStatement("UPDATE shezhi SET jygs='"+jygs+"',jyjg='"+jyjg+"'");   
                
                  pstmt.executeUpdate();

                  ResultSet rs=stmt.executeQuery("SELECT * FROM shezhi");
                  System.out.println("Result after executeUpdate");
                                                       
                    
                  rs.close();
                  stmt.close();
                                
                  
                  con.close();
 }
   
      catch(SQLException ex){
          
             System.out.println("\n****SQLException caught  ****\n");

             while(ex!=null){

                     System.out.println("SQLState:"+ ex.getSQLState());
                     System.out.println("Message:"+ ex.getMessage());
                     System.out.println("Vendor:  "+ ex.getErrorCode());
                     ex=ex.getNextException();
                     System.out.println("");
          }

    }
catch(java.lang.Exception ex){
     ex.printStackTrace(); 
  }
  
//.........................................................
		
	//System.out.println((msg.getContent()).toString());
	 System.out.println(jyjg);
	System.out.println(jygs);
    	}
	  	else{
	  		System.out.println("\nNo message received in state SECOND.op2");
	  	}

    }
    
    
    
    

    	
         
  } // End of my3StepBehaviour class

  
  protected void setup() {

    my3StepBehaviour mybehaviour = new my3StepBehaviour(this);
    addBehaviour(mybehaviour);
		
  }


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -