hope this may help you
[CODE]
package com.s7.admintools;
import java.util.Vector;
import org.snmp4j.CommunityTarget;
import org.snmp4j.Snmp;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.smi.OID;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.PDU;
import org.snmp4j.event.ResponseListener;
public class SNMPBroadcast {
Vector<String> broadcastList = new Vector<String>();
/**
* @cons
*/
public SNMPBroadcast() {
}
/**
* This method is to broadcast SNMP Request and collect the list of
ipAddress
* @return broadcastList
*/
public Vector<String> broadCast() {
try {
Snmp snmp = AdminToolsCommon.createSnmp();
snmp.listen();
CommunityTarget target = AdminToolsCommon
.createNewTarget(AdminToolsCommon
.getBroadcastTargetAddress());
PDU command = AdminToolsCommon.createNewPDU();
command.add(new VariableBinding(new OID(new int[] { 1, 3, 6,
1, 2,
1, 1, 1, 0 })));
snmp.send(command, target, null, new ResponseListener() {
public void onResponse(ResponseEvent event) {
String[] ipAddress;
// only if machine is windows
if
(event.getResponse().toString().contains("Windows")) {
ipAddress = event.getPeerAddress().toString()
.split("/");
broadcastList.add(ipAddress[0]);
ipAddress = null;
}
}
});
Thread.sleep(1000);
} catch (Exception e) {
// TODO:
} finally {
}
return broadcastList;
}
} // End of Broadcast
[/CODE]
Dmitriy Dubovoy wrote:
Hello,
Please help me,
I tried to send broadcast snmp request using SNMPv3 but always I received
only one response.
Please look at the my code below:
try {
ThreadPool tp = ThreadPool.create("Asynchronous SNMP Adaptor
Thread", 3);
MultiThreadedMessageDispatcher mtmd = new
MultiThreadedMessageDispatcher(tp, new MessageDispatcherImpl());
mtmd.addMessageProcessingModel(new MPv1());
mtmd.addMessageProcessingModel(new MPv2c());
mtmd.addMessageProcessingModel(new MPv3());
mtmd.addCommandResponder(this);
DefaultUdpTransportMapping defaultTransport = new
DefaultUdpTransportMapping();
defaultTransport.setReceiveBufferSize(65535);
TransportMapping transport = defaultTransport;
mtmd.addTransportMapping(transport);
USM usm = new USM(SecurityProtocols.getInstance(),
new OctetString(MPv3.createLocalEngineID()), 0);
SecurityModels.getInstance().addSecurityModel(usm);
OctetString securityName = new OctetString("admin");
UsmUser usmUser = new UsmUser(securityName,
AuthMD5.ID,
new OctetString("adminadmin"),
PrivDES.ID,
new OctetString("adminadmin"));
snmp.getUSM().addUser( securityName, usmUser);
transport.addTransportListener(mtmd); // addMessageDispatcher()
was deprecated in 1.7.4a.
transport.listen();
// create the PDU
ScopedPDU pduScoped = new ScopedPDU();
//Fill scoped pdu parameters
logger.debug("asyncsend_v3(): Fill scoped pdu parameters ");
pduScoped.setType(PDU.GET);
pduScoped.add(new VariableBinding(new
OID("1.3.6.1.2.1.2.2.1.10"))); //for example
//set SecurityLevel
int securityLevel = snmpTarget.getSecurityLevel();
Address targetAddress = GenericAddress.parse("10.10.255.255/161");
PduHandle reqHandle = mtmd.sendPdu(null, targetAddress,
SnmpConstants.version3,
SecurityModel.SECURITY_MODEL_USM,
securityName.getValue(),
SecurityLevel.NOAUTH_NOPRIV, pduScoped, true);
} catch (IOException e) {
logger.error("asyncsend(): Error sending async message. " + e);
throw e;
} catch (Exception e){
logger.error("asyncsend(): Error sending async message. " + e);
}
...
public void processPdu(CommandResponderEvent e) {
PDU responsePdu = e.getPDU();
if (responsePdu == null)
return;
/*
if (responsePdu.getType() != PDU.RESPONSE)
return;
Integer32 int32 =
responsePdu.getRequestID();
if (int32.getValue() == 0)
return;
*/
PduHandle pduHandle = e.getPduHandle();
e.getPeerAddress();
} catch (Exception exception) {
}
}
After executing the first part of code I receives only one
CommandResponderEvent.
The same code for SNMP v1 works fine, I receives responses from all my
devices:
ThreadPool tp = ThreadPool.create("Asynchronous SNMP Adaptor Thread", 3);
MultiThreadedMessageDispatcher mtmd = new
MultiThreadedMessageDispatcher(tp, new MessageDispatcherImpl());
mtmd.addMessageProcessingModel(new MPv1());
mtmd.addMessageProcessingModel(new MPv2c());
mtmd.addMessageProcessingModel(new MPv3());
mtmd.addCommandResponder(this);
DefaultUdpTransportMapping defaultTransport = new
DefaultUdpTransportMapping();
defaultTransport.setReceiveBufferSize(65535);
TransportMapping transport = defaultTransport;
mtmd.addTransportMapping(transport);
// transport.addMessageDispatcher(mtmd);
transport.addTransportListener(mtmd);
transport.listen();
Address targetAddress = GenericAddress.parse("10.10.255.255/161");
PduHandle reqHandle = mtmd.sendPdu(null,
targetAddress, SnmpConstants.version1,
SecurityModel.SECURITY_MODEL_SNMPv1, new OctetString("public") .getValue(),
SecurityLevel.NOAUTH_NOPRIV, pdu, true);
All devices supports SNMPv3 and set up by the same settings.
Could anyone help me to receive all responses? What I do incorrectly?
Please help me!
Thanks,
Dmitriy
_______________________________________________
SNMP4J mailing list
[email protected]
http://lists.agentpp.org/mailman/listinfo/snmp4j
_______________________________________________
SNMP4J mailing list
[email protected]
http://lists.agentpp.org/mailman/listinfo/snmp4j