www.pudn.com > snmp.zip > CNRAgent.java
package jp.co.mcs.sms.commctrl.simulator.snmp;
/**
* agent
* 20080710
*/
import org.snmp4j.PDU;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.VariableBinding;
public class CNRAgent {
public static class Handler implements org.snmp4j.CommandResponder {
protected java.lang.String mAddress = null;
protected int mPort = 0;
protected java.lang.String mMyCommunityName = null;
protected org.snmp4j.TransportMapping mServerSocket = null;
protected org.snmp4j.Snmp mSNMP = null;
public Handler() {
}
public void configure() {
// mAddress = "192.168.10.191";
mAddress = "127.0.0.1";
mPort = 161;
mMyCommunityName = "CNRagent";
}
public void start() {
try {
mServerSocket = new org.snmp4j.transport.DefaultUdpTransportMapping(
new org.snmp4j.smi.UdpAddress(java.net.InetAddress
.getByName(mAddress), mPort));
mSNMP = new org.snmp4j.Snmp(mServerSocket);
mSNMP.addCommandResponder(this);
mServerSocket.listen();
} catch (java.net.UnknownHostException vException) {
System.out.println(vException);
} catch (java.io.IOException vException) {
System.out.println(vException);
}
}
public synchronized void processPdu(
org.snmp4j.CommandResponderEvent aEvent) {
java.lang.String vCommunityName = new java.lang.String(aEvent
.getSecurityName());
System.out.println("Community name " + vCommunityName);
org.snmp4j.PDU vPDU = aEvent.getPDU();
Config config = new Config();
if (vPDU == null) {
System.out.println("Null pdu");
} else {
System.out.println("(rcv) " + vPDU.toString());
switch (vPDU.getType()) {
case org.snmp4j.PDU.GET:
System.out.println("------GET----------SSS");
System.out.println("----get------"
+ vPDU.get(0).toString());
break;
case org.snmp4j.PDU.GETNEXT:
System.out.println("------GETNEXT----------SSS");
break;
case org.snmp4j.PDU.SET:
System.out.println("------SET----------SSS");
String reciv = vPDU.get(0).getVariable()
.getSyntaxString();
System.out.println("----set------"
+ vPDU.get(0).toString());
String setoid = vPDU.get(0).toString();
System.out.println("-----set-----"
+ setoid.substring(0, setoid.indexOf("=") - 1));
System.out.println("-----set-----"
+ setoid.substring(setoid.indexOf("=") + 1));
config.setValueByOID(setoid.substring(0,
setoid.indexOf("=") - 1).trim(), setoid.substring(
setoid.indexOf("=") + 1).trim());
break;
default:
break;
}
org.snmp4j.mp.StatusInformation statusInformation = new org.snmp4j.mp.StatusInformation();
org.snmp4j.mp.StateReference ref = aEvent.getStateReference();
try {
System.out.println("Sending response");
vPDU.setType(PDU.RESPONSE);
OID oid = vPDU.get(0).getOid();
String setoid = vPDU.get(0).toString();
System.out.println("----get1------"
+ setoid.substring(0, setoid.indexOf("=") - 1));
System.out.println("-----get2-----"
+ setoid.substring(setoid.indexOf("=") + 1));
System.out.println("-----get3-----"
+ config.getValueByOID(setoid.substring(0,
setoid.indexOf("=") - 1).trim()));
vPDU.set(0, new VariableBinding(oid, new OctetString(config
.getValueByOID(setoid.substring(0,
setoid.indexOf("=") - 1).trim()))));
aEvent.getMessageDispatcher().returnResponsePdu(
aEvent.getMessageProcessingModel(),
aEvent.getSecurityModel(), aEvent.getSecurityName(),
aEvent.getSecurityLevel(), vPDU,
aEvent.getMaxSizeResponsePDU(), ref,
statusInformation);
} catch (org.snmp4j.MessageException vException) {
System.out.println(vException);
}
}
}
}
public static void main(String argv[]) {
Handler h = new Handler();
/** 初始化参数 * */
h.configure();
h.start();
/** Do nothing loop * */
while (true) {
System.out.println("----------loop-------------");
synchronized (CNRAgent.class) {
try {
CNRAgent.class.wait();
} catch (Exception e) {
}
}
}
}
}