📄 stresstest.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 + -