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

📄 stresstest.java

📁 你个snmp的源码
💻 JAVA
字号:
/*_############################################################################
  _## 
  _##  SNMP4J-Agent - StressTest.java  
  _## 
  _##  Copyright 2005-2006  Frank Fock (SNMP4J.org)
  _##  
  _##  Licensed under the Apache License, Version 2.0 (the "License");
  _##  you may not use this file except in compliance with the License.
  _##  You may obtain a copy of the License at
  _##  
  _##      http://www.apache.org/licenses/LICENSE-2.0
  _##  
  _##  Unless required by applicable law or agreed to in writing, software
  _##  distributed under the License is distributed on an "AS IS" BASIS,
  _##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  _##  See the License for the specific language governing permissions and
  _##  limitations under the License.
  _##  
  _##########################################################################*/

package org.snmp4j.agent.test;

import java.io.IOException;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.TransportMapping;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.event.ResponseListener;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.MessageProcessingModel;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.smi.Address;
import org.snmp4j.smi.GenericAddress;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.Variable;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class StressTest {

  private Snmp snmp;

  public StressTest(String host, int port) {
    try {
      Address address = GenericAddress.parse("udp:" + host + "/" + port);
      System.out.println("Address = " + address);

      TransportMapping transport = new DefaultUdpTransportMapping();
      snmp = new Snmp(transport);
      transport.listen();

      MessageProcessingModel mp =
          snmp.getMessageProcessingModel(MessageProcessingModel.MPv2c);

      USM usm = new USM(SecurityProtocols.getInstance(), new
                        OctetString(MPv3.createLocalEngineID()), 0);
      SecurityModels.getInstance().addSecurityModel(usm);

      CommunityTarget target = new CommunityTarget();

      target.setCommunity(new OctetString("public"));

      target.setAddress(address);
      target.setRetries(1);
      target.setTimeout(100);
      target.setVersion(SnmpConstants.version2c);

      while (true) {
        PDU pdu = new PDU();
        pdu.setType(PDU.GET);
        VariableBinding varbind = new
            VariableBinding(SnmpConstants.sysUpTime);
        pdu.add(varbind);
        synchronized (snmp) {
          snmp.send(pdu, target, null, listener);

          try {
            snmp.wait();
          }
          catch (InterruptedException e) {

            e.printStackTrace();
          }
        }
      }

    }
    catch (IOException e) {

      e.printStackTrace();
    }

  }

  private ResponseListener listener = new ResponseListener() {
    VariableBinding varbind = null;
    Variable var = null;
    Object value = null;

    public void onResponse(ResponseEvent event) {
      // Always cancel async request when response has been received
      // otherwise a memory leak is created! Not canceling a request
      // immediately can be useful when sending a request to a broadcast
      // address.
      ((Snmp) event.getSource()).cancel(event.getRequest(), this);
      System.out.println("Received response PDU is: " + event.getResponse());

      PDU rpdu = event.getResponse();

      if (rpdu != null) {
        varbind = rpdu.get(0);
        OID oid = varbind.getOid();
        if (oid.equals(SnmpConstants.sysUpTime)) {
          var = varbind.getVariable();
          System.out.println("uptime = " + var);
        }

      }
      else {
        System.out.println("PDU timed out");
      }
      synchronized (snmp) {
        snmp.notifyAll();
      }

    }
  };

  public static void main(String[] args) {
    new StressTest(args[0], Integer.parseInt(args[1]));
  }

}

⌨️ 快捷键说明

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