Προς το περιεχόμενο

Manager-Agent Java


glaer

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας,Εχω κολλησει καπου αν θα μπορουσε καποιος να με βοηθησει.θελω να φτιαξω μια εφαρμογη manager-agent.manager-agent ειναι ιδιο με client-server.Ο agent(server) δινει την δυνατοτητα στον manager(client) να αλλαζει την τιμη σε μια απο τις παραμετρους που του δινονται. O Manager επιλεγει την παραμετρο και την τιμη της τα στελνει στον snmpmanager ο οποιος θα τα στειλει μεσω udp socket στον agent. Ο agent καλει την μεθοδο setValue() για να υλοποιησει την αλλαγη της μεταβλητης και να την στειλει στον manager για επιβεβαιωση της αλλαγης που εγινε. ο snmpmanager περιμενει λιγο και αν δεν του ερθει η επιβεβαιωση για την νεα τιμη ξαναστελνει τα δεδομενα. Το θεμα μου ειναι το εξης στην agentmain στην συνθηκη if(method.equals("set_request"){...} ενω μεταφερονται τα δεδομενα απο το snmpmanager στον agent και η τιμη της method ειναι οντως set_request, δεν μπαινει μεσα στην ιφ για να συνεχιζει μετα επομενα.εχετε καμμια ιδεα του γιατι?

οι κωδικες για agentmain και snmpagent ειναι οι εξης:

 

>import java.net.*;
import java.io.*;

public class AgentMain {
   
public static void main (String[] args)throws Exception{
       
SNMPAgent agent= new SNMPAgent();
DatagramSocket agentSocket= new DatagramSocket(161);
       
     byte[] receiveMethod = new byte[1024]; 
     byte[] receiveParamName = new byte[1024];
     byte[] receiveValue = new byte[1024];
     byte[] sendNewValue  = new byte[1024]; 
     
     System.out.println(InetAddress.getLocalHost().getHostName());

     while(true) 
       { 
 
         DatagramPacket receiveMethodPacket = 
            new DatagramPacket(receiveMethod, receiveMethod.length); 
         DatagramPacket receiveParamNamePacket = 
            new DatagramPacket(receiveParamName, receiveParamName.length);
           DatagramPacket receiveValuePacket = 
            new DatagramPacket(receiveValue, receiveValue.length); 
         
         
         agentSocket.receive(receiveMethodPacket); 
         agentSocket.receive(receiveParamNamePacket);
         agentSocket.receive(receiveValuePacket);
         
       String method = new String(receiveMethodPacket.getData()); 
       String paramName = new String(receiveParamNamePacket.getData());
       String value = new String(receiveValuePacket.getData());
 
         InetAddress IPAddress1 = receiveMethodPacket.getAddress(); 
         InetAddress IPAddress2= receiveParamNamePacket.getAddress();
         InetAddress IPAddress3= receiveValuePacket.getAddress();
 
         int port1 = receiveMethodPacket.getPort(); 
         int port2= receiveParamNamePacket.getPort();
         int port3= receiveValuePacket.getPort();
         
 
          String retVal;
          
          
          if (method.equals("setrequest")) {        	

              System.out.println("Received:" + method + "(" + paramName + "," + value + ")");
				        	
	 agent.setValue(paramName, value);
                   retVal = agent.getValue(paramName);
                   System.out.println("the retVal is"+retVal);
                  if (retVal != null) {
				        
                             sendNewValue=retVal.getBytes();
                             DatagramPacket sendValuePacket = 
            new DatagramPacket(sendNewValue, sendNewValue.length, IPAddress1, 
                              port1);
                             agentSocket.send(sendValuePacket);
                             System.out.println("Sending:" + "get_response(" + paramName + "," + retVal + ")");
                          
				   } else {
			            System.out.println("Parameter \"" + paramName + "\" does not exist!");
				   }
			 
          } 
   }     
 }
}  

 

 

 

 

>import java.net.InetAddress;
import java.net.UnknownHostException;

public class SNMPAgent {

   
       public static final long START_TIME =  System.currentTimeMillis() / 1000; // make it seconds	
   private String sysName="Sofoula";
   private String sysLocation="Athens";
   private String sysContact="-";
          private String retVal;
          
       public String setValue(String paramName, String value) {
         System.out.println("mpainw edw");
           if (paramName.equals("sysName")) {
		sysName= value;
                       retVal=sysName;
                       
               } else if (paramName.equals("sysLocation")) {
		sysLocation = value;
                       retVal=sysLocation;
	} else if (paramName.equals("sysContact")) {
		sysContact = value;
                       retVal=sysContact;
               }
           return retVal;
}
   
}

Δημοσ.

εχει να προτεινει κατι καποιος?το τσεκαρα ξανα και ξανα και δεν δεχεται σαν αληθης την συνθηκη ενω ειναι!

Δημοσ.

καταρχην ευχαριστω για την απαντηση. Αλλα επειδη ειναι το πρωτο μου προγραμμα java, το debug τι ειναι και πως θα μπορουσα να το κανω στο netbeans που τρεχω το προγραμμα μου?

Δημοσ.

ok ευχαριστω αλλα δεν εβγαλα πολυ ακρη με αυτο. το προβλημα μου ειναι εδω

if (method.equals("setrequest"))

Εχω τσεκαρει την τιμη της method πριν ελεγξει την συνθηκη και ειναι setrequest.παρολαυτα οταν την ελεγχει την βγαζει false.

Επειδη εχω 4 κωδικες συνολικα 2 για manager και 2 για agent, παρατηρησα πως αν βαλω την συνθηκη if με την μεθοδο equals και τις ιδιες τιμες στο πρωτο κωδικα την αναγνωριζει σαν true, ενω στους αλλους 2 κωδικες που την χρειαζομαι κι εκει την αναγνωριζει σαν false.

Δημοσ.

ναι Δεμε:P Βασικα αλλαξα την μεθοδο equals με contains και ξεκολλησε τι να πω -_- Anyway thanks for helping me;)

Δημοσ.

α γι αυτο ειχε σκαλωσει ε? οκ καταλαβα.thanks.ναι εχουμε να παραδοσουμε αυτη την εργασια την Τεταρτη.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...